Merge pull request #12772 from muxi/fix-xcode-misalign-warning

Fix Xcode warning of mis-aligned structs
diff --git a/.gitmodules b/.gitmodules
index 144fd08..8af0052 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -24,3 +24,6 @@
 	path = third_party/cares/cares
 	url = https://github.com/c-ares/c-ares.git
 	branch = cares-1_12_0
+[submodule "third_party/bloaty"]
+	path = third_party/bloaty
+	url = https://github.com/google/bloaty.git
diff --git a/BUILD b/BUILD
index dfcded2..d0b37df 100644
--- a/BUILD
+++ b/BUILD
@@ -34,11 +34,11 @@
 )
 
 # This should be updated along with build.yaml
-g_stands_for = "gambit"
+g_stands_for = "generous"
 
-core_version = "4.0.0-dev"
+core_version = "5.0.0-dev"
 
-version = "1.7.0-dev"
+version = "1.8.0-dev"
 
 GPR_PUBLIC_HDRS = [
     "include/grpc/support/alloc.h",
@@ -187,7 +187,7 @@
 
 grpc_cc_library(
     name = "gpr",
-    language = "c",
+    language = "c++",
     public_hdrs = GPR_PUBLIC_HDRS,
     standalone = True,
     deps = [
@@ -198,11 +198,11 @@
 grpc_cc_library(
     name = "grpc_unsecure",
     srcs = [
-        "src/core/lib/surface/init.c",
-        "src/core/lib/surface/init_unsecure.c",
-        "src/core/plugin_registry/grpc_unsecure_plugin_registry.c",
+        "src/core/lib/surface/init.cc",
+        "src/core/lib/surface/init_unsecure.cc",
+        "src/core/plugin_registry/grpc_unsecure_plugin_registry.cc",
     ],
-    language = "c",
+    language = "c++",
     public_hdrs = GRPC_PUBLIC_HDRS,
     standalone = True,
     deps = [
@@ -214,10 +214,10 @@
 grpc_cc_library(
     name = "grpc",
     srcs = [
-        "src/core/lib/surface/init.c",
-        "src/core/plugin_registry/grpc_plugin_registry.c",
+        "src/core/lib/surface/init.cc",
+        "src/core/plugin_registry/grpc_plugin_registry.cc",
     ],
-    language = "c",
+    language = "c++",
     public_hdrs = GRPC_PUBLIC_HDRS + GRPC_SECURE_PUBLIC_HDRS,
     standalone = True,
     deps = [
@@ -232,10 +232,10 @@
 grpc_cc_library(
     name = "grpc_cronet",
     srcs = [
-        "src/core/lib/surface/init.c",
-        "src/core/plugin_registry/grpc_cronet_plugin_registry.c",
+        "src/core/lib/surface/init.cc",
+        "src/core/plugin_registry/grpc_cronet_plugin_registry.cc",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_http_filters",
@@ -409,21 +409,21 @@
 grpc_cc_library(
     name = "census",
     srcs = [
-        "src/core/ext/census/base_resources.c",
-        "src/core/ext/census/context.c",
+        "src/core/ext/census/base_resources.cc",
+        "src/core/ext/census/context.cc",
         "src/core/ext/census/gen/census.pb.c",
         "src/core/ext/census/gen/trace_context.pb.c",
-        "src/core/ext/census/grpc_context.c",
-        "src/core/ext/census/grpc_filter.c",
-        "src/core/ext/census/grpc_plugin.c",
-        "src/core/ext/census/initialize.c",
-        "src/core/ext/census/intrusive_hash_map.c",
-        "src/core/ext/census/mlog.c",
-        "src/core/ext/census/operation.c",
-        "src/core/ext/census/placeholders.c",
-        "src/core/ext/census/resource.c",
-        "src/core/ext/census/trace_context.c",
-        "src/core/ext/census/tracing.c",
+        "src/core/ext/census/grpc_context.cc",
+        "src/core/ext/census/grpc_filter.cc",
+        "src/core/ext/census/grpc_plugin.cc",
+        "src/core/ext/census/initialize.cc",
+        "src/core/ext/census/intrusive_hash_map.cc",
+        "src/core/ext/census/mlog.cc",
+        "src/core/ext/census/operation.cc",
+        "src/core/ext/census/placeholders.cc",
+        "src/core/ext/census/resource.cc",
+        "src/core/ext/census/trace_context.cc",
+        "src/core/ext/census/tracing.cc",
     ],
     hdrs = [
         "src/core/ext/census/aggregation.h",
@@ -449,7 +449,7 @@
         "nanopb",
         "libssl",
     ],
-    language = "c",
+    language = "c++",
     public_hdrs = [
         "include/grpc/census.h",
     ],
@@ -461,52 +461,52 @@
 grpc_cc_library(
     name = "gpr_base",
     srcs = [
-        "src/core/lib/profiling/basic_timers.c",
-        "src/core/lib/profiling/stap_timers.c",
-        "src/core/lib/support/alloc.c",
-        "src/core/lib/support/arena.c",
-        "src/core/lib/support/atm.c",
-        "src/core/lib/support/avl.c",
-        "src/core/lib/support/backoff.c",
-        "src/core/lib/support/cmdline.c",
-        "src/core/lib/support/cpu_iphone.c",
-        "src/core/lib/support/cpu_linux.c",
-        "src/core/lib/support/cpu_posix.c",
-        "src/core/lib/support/cpu_windows.c",
-        "src/core/lib/support/env_linux.c",
-        "src/core/lib/support/env_posix.c",
-        "src/core/lib/support/env_windows.c",
-        "src/core/lib/support/histogram.c",
-        "src/core/lib/support/host_port.c",
-        "src/core/lib/support/log.c",
-        "src/core/lib/support/log_android.c",
-        "src/core/lib/support/log_linux.c",
-        "src/core/lib/support/log_posix.c",
-        "src/core/lib/support/log_windows.c",
-        "src/core/lib/support/mpscq.c",
-        "src/core/lib/support/murmur_hash.c",
-        "src/core/lib/support/stack_lockfree.c",
-        "src/core/lib/support/string.c",
-        "src/core/lib/support/string_posix.c",
-        "src/core/lib/support/string_util_windows.c",
-        "src/core/lib/support/string_windows.c",
-        "src/core/lib/support/subprocess_posix.c",
-        "src/core/lib/support/subprocess_windows.c",
-        "src/core/lib/support/sync.c",
-        "src/core/lib/support/sync_posix.c",
-        "src/core/lib/support/sync_windows.c",
-        "src/core/lib/support/thd.c",
-        "src/core/lib/support/thd_posix.c",
-        "src/core/lib/support/thd_windows.c",
-        "src/core/lib/support/time.c",
-        "src/core/lib/support/time_posix.c",
-        "src/core/lib/support/time_precise.c",
-        "src/core/lib/support/time_windows.c",
-        "src/core/lib/support/tls_pthread.c",
-        "src/core/lib/support/tmpfile_msys.c",
-        "src/core/lib/support/tmpfile_posix.c",
-        "src/core/lib/support/tmpfile_windows.c",
-        "src/core/lib/support/wrap_memcpy.c",
+        "src/core/lib/profiling/basic_timers.cc",
+        "src/core/lib/profiling/stap_timers.cc",
+        "src/core/lib/support/alloc.cc",
+        "src/core/lib/support/arena.cc",
+        "src/core/lib/support/atm.cc",
+        "src/core/lib/support/avl.cc",
+        "src/core/lib/support/backoff.cc",
+        "src/core/lib/support/cmdline.cc",
+        "src/core/lib/support/cpu_iphone.cc",
+        "src/core/lib/support/cpu_linux.cc",
+        "src/core/lib/support/cpu_posix.cc",
+        "src/core/lib/support/cpu_windows.cc",
+        "src/core/lib/support/env_linux.cc",
+        "src/core/lib/support/env_posix.cc",
+        "src/core/lib/support/env_windows.cc",
+        "src/core/lib/support/histogram.cc",
+        "src/core/lib/support/host_port.cc",
+        "src/core/lib/support/log.cc",
+        "src/core/lib/support/log_android.cc",
+        "src/core/lib/support/log_linux.cc",
+        "src/core/lib/support/log_posix.cc",
+        "src/core/lib/support/log_windows.cc",
+        "src/core/lib/support/mpscq.cc",
+        "src/core/lib/support/murmur_hash.cc",
+        "src/core/lib/support/stack_lockfree.cc",
+        "src/core/lib/support/string.cc",
+        "src/core/lib/support/string_posix.cc",
+        "src/core/lib/support/string_util_windows.cc",
+        "src/core/lib/support/string_windows.cc",
+        "src/core/lib/support/subprocess_posix.cc",
+        "src/core/lib/support/subprocess_windows.cc",
+        "src/core/lib/support/sync.cc",
+        "src/core/lib/support/sync_posix.cc",
+        "src/core/lib/support/sync_windows.cc",
+        "src/core/lib/support/thd.cc",
+        "src/core/lib/support/thd_posix.cc",
+        "src/core/lib/support/thd_windows.cc",
+        "src/core/lib/support/time.cc",
+        "src/core/lib/support/time_posix.cc",
+        "src/core/lib/support/time_precise.cc",
+        "src/core/lib/support/time_windows.cc",
+        "src/core/lib/support/tls_pthread.cc",
+        "src/core/lib/support/tmpfile_msys.cc",
+        "src/core/lib/support/tmpfile_posix.cc",
+        "src/core/lib/support/tmpfile_windows.cc",
+        "src/core/lib/support/wrap_memcpy.cc",
     ],
     hdrs = [
         "src/core/lib/profiling/timers.h",
@@ -527,7 +527,7 @@
         "src/core/lib/support/time_precise.h",
         "src/core/lib/support/tmpfile.h",
     ],
-    language = "c",
+    language = "c++",
     public_hdrs = GPR_PUBLIC_HDRS,
     deps = [
         "gpr_codegen",
@@ -536,7 +536,7 @@
 
 grpc_cc_library(
     name = "gpr_codegen",
-    language = "c",
+    language = "c++",
     public_hdrs = [
         "include/grpc/impl/codegen/atm.h",
         "include/grpc/impl/codegen/atm_gcc_atomic.h",
@@ -555,145 +555,149 @@
 
 grpc_cc_library(
     name = "grpc_trace",
-    srcs = ["src/core/lib/debug/trace.c"],
+    srcs = ["src/core/lib/debug/trace.cc"],
     hdrs = ["src/core/lib/debug/trace.h"],
-    language = "c",
-    deps = [":gpr"],
+    language = "c++",
+    public_hdrs = GRPC_PUBLIC_HDRS,
+    deps = [
+        "grpc_codegen",
+        ":gpr",
+    ],
 )
 
 grpc_cc_library(
     name = "grpc_base_c",
     srcs = [
-        "src/core/lib/channel/channel_args.c",
-        "src/core/lib/channel/channel_stack.c",
-        "src/core/lib/channel/channel_stack_builder.c",
-        "src/core/lib/channel/connected_channel.c",
-        "src/core/lib/channel/handshaker.c",
-        "src/core/lib/channel/handshaker_factory.c",
-        "src/core/lib/channel/handshaker_registry.c",
-        "src/core/lib/compression/compression.c",
-        "src/core/lib/compression/message_compress.c",
-        "src/core/lib/compression/stream_compression.c",
-        "src/core/lib/compression/stream_compression_gzip.c",
-        "src/core/lib/compression/stream_compression_identity.c",
-        "src/core/lib/debug/stats.c",
-        "src/core/lib/debug/stats_data.c",
-        "src/core/lib/http/format_request.c",
-        "src/core/lib/http/httpcli.c",
-        "src/core/lib/http/parser.c",
-        "src/core/lib/iomgr/call_combiner.c",
-        "src/core/lib/iomgr/closure.c",
-        "src/core/lib/iomgr/combiner.c",
-        "src/core/lib/iomgr/endpoint.c",
-        "src/core/lib/iomgr/endpoint_pair_posix.c",
-        "src/core/lib/iomgr/endpoint_pair_uv.c",
-        "src/core/lib/iomgr/endpoint_pair_windows.c",
-        "src/core/lib/iomgr/error.c",
-        "src/core/lib/iomgr/ev_epoll1_linux.c",
-        "src/core/lib/iomgr/ev_epollex_linux.c",
-        "src/core/lib/iomgr/ev_epollsig_linux.c",
-        "src/core/lib/iomgr/ev_poll_posix.c",
-        "src/core/lib/iomgr/ev_posix.c",
-        "src/core/lib/iomgr/ev_windows.c",
-        "src/core/lib/iomgr/exec_ctx.c",
-        "src/core/lib/iomgr/executor.c",
-        "src/core/lib/iomgr/gethostname_fallback.c",
-        "src/core/lib/iomgr/gethostname_host_name_max.c",
-        "src/core/lib/iomgr/gethostname_sysconf.c",
-        "src/core/lib/iomgr/iocp_windows.c",
-        "src/core/lib/iomgr/iomgr.c",
-        "src/core/lib/iomgr/iomgr_posix.c",
-        "src/core/lib/iomgr/iomgr_uv.c",
-        "src/core/lib/iomgr/iomgr_windows.c",
-        "src/core/lib/iomgr/is_epollexclusive_available.c",
-        "src/core/lib/iomgr/load_file.c",
-        "src/core/lib/iomgr/lockfree_event.c",
-        "src/core/lib/iomgr/network_status_tracker.c",
-        "src/core/lib/iomgr/polling_entity.c",
-        "src/core/lib/iomgr/pollset_set_uv.c",
-        "src/core/lib/iomgr/pollset_set_windows.c",
-        "src/core/lib/iomgr/pollset_uv.c",
-        "src/core/lib/iomgr/pollset_windows.c",
-        "src/core/lib/iomgr/resolve_address_posix.c",
-        "src/core/lib/iomgr/resolve_address_uv.c",
-        "src/core/lib/iomgr/resolve_address_windows.c",
-        "src/core/lib/iomgr/resource_quota.c",
-        "src/core/lib/iomgr/sockaddr_utils.c",
-        "src/core/lib/iomgr/socket_factory_posix.c",
-        "src/core/lib/iomgr/socket_mutator.c",
-        "src/core/lib/iomgr/socket_utils_common_posix.c",
-        "src/core/lib/iomgr/socket_utils_linux.c",
-        "src/core/lib/iomgr/socket_utils_posix.c",
-        "src/core/lib/iomgr/socket_utils_uv.c",
-        "src/core/lib/iomgr/socket_utils_windows.c",
-        "src/core/lib/iomgr/socket_windows.c",
-        "src/core/lib/iomgr/tcp_client_posix.c",
-        "src/core/lib/iomgr/tcp_client_uv.c",
-        "src/core/lib/iomgr/tcp_client_windows.c",
-        "src/core/lib/iomgr/tcp_posix.c",
-        "src/core/lib/iomgr/tcp_server_posix.c",
-        "src/core/lib/iomgr/tcp_server_utils_posix_common.c",
-        "src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c",
-        "src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c",
-        "src/core/lib/iomgr/tcp_server_uv.c",
-        "src/core/lib/iomgr/tcp_server_windows.c",
-        "src/core/lib/iomgr/tcp_uv.c",
-        "src/core/lib/iomgr/tcp_windows.c",
-        "src/core/lib/iomgr/time_averaged_stats.c",
-        "src/core/lib/iomgr/timer_generic.c",
-        "src/core/lib/iomgr/timer_heap.c",
-        "src/core/lib/iomgr/timer_manager.c",
-        "src/core/lib/iomgr/timer_uv.c",
-        "src/core/lib/iomgr/udp_server.c",
-        "src/core/lib/iomgr/unix_sockets_posix.c",
-        "src/core/lib/iomgr/unix_sockets_posix_noop.c",
-        "src/core/lib/iomgr/wakeup_fd_cv.c",
-        "src/core/lib/iomgr/wakeup_fd_eventfd.c",
-        "src/core/lib/iomgr/wakeup_fd_nospecial.c",
-        "src/core/lib/iomgr/wakeup_fd_pipe.c",
-        "src/core/lib/iomgr/wakeup_fd_posix.c",
-        "src/core/lib/json/json.c",
-        "src/core/lib/json/json_reader.c",
-        "src/core/lib/json/json_string.c",
-        "src/core/lib/json/json_writer.c",
-        "src/core/lib/slice/b64.c",
-        "src/core/lib/slice/percent_encoding.c",
-        "src/core/lib/slice/slice.c",
-        "src/core/lib/slice/slice_buffer.c",
-        "src/core/lib/slice/slice_hash_table.c",
-        "src/core/lib/slice/slice_intern.c",
-        "src/core/lib/slice/slice_string_helpers.c",
-        "src/core/lib/surface/alarm.c",
-        "src/core/lib/surface/api_trace.c",
-        "src/core/lib/surface/byte_buffer.c",
-        "src/core/lib/surface/byte_buffer_reader.c",
-        "src/core/lib/surface/call.c",
-        "src/core/lib/surface/call_details.c",
-        "src/core/lib/surface/call_log_batch.c",
-        "src/core/lib/surface/channel.c",
-        "src/core/lib/surface/channel_init.c",
-        "src/core/lib/surface/channel_ping.c",
-        "src/core/lib/surface/channel_stack_type.c",
-        "src/core/lib/surface/completion_queue.c",
-        "src/core/lib/surface/completion_queue_factory.c",
-        "src/core/lib/surface/event_string.c",
-        "src/core/lib/surface/metadata_array.c",
-        "src/core/lib/surface/server.c",
-        "src/core/lib/surface/validate_metadata.c",
-        "src/core/lib/surface/version.c",
-        "src/core/lib/transport/bdp_estimator.c",
-        "src/core/lib/transport/byte_stream.c",
-        "src/core/lib/transport/connectivity_state.c",
-        "src/core/lib/transport/error_utils.c",
-        "src/core/lib/transport/metadata.c",
-        "src/core/lib/transport/metadata_batch.c",
-        "src/core/lib/transport/pid_controller.c",
-        "src/core/lib/transport/service_config.c",
-        "src/core/lib/transport/static_metadata.c",
-        "src/core/lib/transport/status_conversion.c",
-        "src/core/lib/transport/timeout_encoding.c",
-        "src/core/lib/transport/transport.c",
-        "src/core/lib/transport/transport_op_string.c",
+        "src/core/lib/channel/channel_args.cc",
+        "src/core/lib/channel/channel_stack.cc",
+        "src/core/lib/channel/channel_stack_builder.cc",
+        "src/core/lib/channel/connected_channel.cc",
+        "src/core/lib/channel/handshaker.cc",
+        "src/core/lib/channel/handshaker_factory.cc",
+        "src/core/lib/channel/handshaker_registry.cc",
+        "src/core/lib/compression/compression.cc",
+        "src/core/lib/compression/message_compress.cc",
+        "src/core/lib/compression/stream_compression.cc",
+        "src/core/lib/compression/stream_compression_gzip.cc",
+        "src/core/lib/compression/stream_compression_identity.cc",
+        "src/core/lib/debug/stats.cc",
+        "src/core/lib/debug/stats_data.cc",
+        "src/core/lib/http/format_request.cc",
+        "src/core/lib/http/httpcli.cc",
+        "src/core/lib/http/parser.cc",
+        "src/core/lib/iomgr/call_combiner.cc",
+        "src/core/lib/iomgr/closure.cc",
+        "src/core/lib/iomgr/combiner.cc",
+        "src/core/lib/iomgr/endpoint.cc",
+        "src/core/lib/iomgr/endpoint_pair_posix.cc",
+        "src/core/lib/iomgr/endpoint_pair_uv.cc",
+        "src/core/lib/iomgr/endpoint_pair_windows.cc",
+        "src/core/lib/iomgr/error.cc",
+        "src/core/lib/iomgr/ev_epoll1_linux.cc",
+        "src/core/lib/iomgr/ev_epollex_linux.cc",
+        "src/core/lib/iomgr/ev_epollsig_linux.cc",
+        "src/core/lib/iomgr/ev_poll_posix.cc",
+        "src/core/lib/iomgr/ev_posix.cc",
+        "src/core/lib/iomgr/ev_windows.cc",
+        "src/core/lib/iomgr/exec_ctx.cc",
+        "src/core/lib/iomgr/executor.cc",
+        "src/core/lib/iomgr/gethostname_fallback.cc",
+        "src/core/lib/iomgr/gethostname_host_name_max.cc",
+        "src/core/lib/iomgr/gethostname_sysconf.cc",
+        "src/core/lib/iomgr/iocp_windows.cc",
+        "src/core/lib/iomgr/iomgr.cc",
+        "src/core/lib/iomgr/iomgr_posix.cc",
+        "src/core/lib/iomgr/iomgr_uv.cc",
+        "src/core/lib/iomgr/iomgr_windows.cc",
+        "src/core/lib/iomgr/is_epollexclusive_available.cc",
+        "src/core/lib/iomgr/load_file.cc",
+        "src/core/lib/iomgr/lockfree_event.cc",
+        "src/core/lib/iomgr/network_status_tracker.cc",
+        "src/core/lib/iomgr/polling_entity.cc",
+        "src/core/lib/iomgr/pollset_set_uv.cc",
+        "src/core/lib/iomgr/pollset_set_windows.cc",
+        "src/core/lib/iomgr/pollset_uv.cc",
+        "src/core/lib/iomgr/pollset_windows.cc",
+        "src/core/lib/iomgr/resolve_address_posix.cc",
+        "src/core/lib/iomgr/resolve_address_uv.cc",
+        "src/core/lib/iomgr/resolve_address_windows.cc",
+        "src/core/lib/iomgr/resource_quota.cc",
+        "src/core/lib/iomgr/sockaddr_utils.cc",
+        "src/core/lib/iomgr/socket_factory_posix.cc",
+        "src/core/lib/iomgr/socket_mutator.cc",
+        "src/core/lib/iomgr/socket_utils_common_posix.cc",
+        "src/core/lib/iomgr/socket_utils_linux.cc",
+        "src/core/lib/iomgr/socket_utils_posix.cc",
+        "src/core/lib/iomgr/socket_utils_uv.cc",
+        "src/core/lib/iomgr/socket_utils_windows.cc",
+        "src/core/lib/iomgr/socket_windows.cc",
+        "src/core/lib/iomgr/tcp_client_posix.cc",
+        "src/core/lib/iomgr/tcp_client_uv.cc",
+        "src/core/lib/iomgr/tcp_client_windows.cc",
+        "src/core/lib/iomgr/tcp_posix.cc",
+        "src/core/lib/iomgr/tcp_server_posix.cc",
+        "src/core/lib/iomgr/tcp_server_utils_posix_common.cc",
+        "src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc",
+        "src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc",
+        "src/core/lib/iomgr/tcp_server_uv.cc",
+        "src/core/lib/iomgr/tcp_server_windows.cc",
+        "src/core/lib/iomgr/tcp_uv.cc",
+        "src/core/lib/iomgr/tcp_windows.cc",
+        "src/core/lib/iomgr/time_averaged_stats.cc",
+        "src/core/lib/iomgr/timer_generic.cc",
+        "src/core/lib/iomgr/timer_heap.cc",
+        "src/core/lib/iomgr/timer_manager.cc",
+        "src/core/lib/iomgr/timer_uv.cc",
+        "src/core/lib/iomgr/udp_server.cc",
+        "src/core/lib/iomgr/unix_sockets_posix.cc",
+        "src/core/lib/iomgr/unix_sockets_posix_noop.cc",
+        "src/core/lib/iomgr/wakeup_fd_cv.cc",
+        "src/core/lib/iomgr/wakeup_fd_eventfd.cc",
+        "src/core/lib/iomgr/wakeup_fd_nospecial.cc",
+        "src/core/lib/iomgr/wakeup_fd_pipe.cc",
+        "src/core/lib/iomgr/wakeup_fd_posix.cc",
+        "src/core/lib/json/json.cc",
+        "src/core/lib/json/json_reader.cc",
+        "src/core/lib/json/json_string.cc",
+        "src/core/lib/json/json_writer.cc",
+        "src/core/lib/slice/b64.cc",
+        "src/core/lib/slice/percent_encoding.cc",
+        "src/core/lib/slice/slice.cc",
+        "src/core/lib/slice/slice_buffer.cc",
+        "src/core/lib/slice/slice_hash_table.cc",
+        "src/core/lib/slice/slice_intern.cc",
+        "src/core/lib/slice/slice_string_helpers.cc",
+        "src/core/lib/surface/alarm.cc",
+        "src/core/lib/surface/api_trace.cc",
+        "src/core/lib/surface/byte_buffer.cc",
+        "src/core/lib/surface/byte_buffer_reader.cc",
+        "src/core/lib/surface/call.cc",
+        "src/core/lib/surface/call_details.cc",
+        "src/core/lib/surface/call_log_batch.cc",
+        "src/core/lib/surface/channel.cc",
+        "src/core/lib/surface/channel_init.cc",
+        "src/core/lib/surface/channel_ping.cc",
+        "src/core/lib/surface/channel_stack_type.cc",
+        "src/core/lib/surface/completion_queue.cc",
+        "src/core/lib/surface/completion_queue_factory.cc",
+        "src/core/lib/surface/event_string.cc",
+        "src/core/lib/surface/metadata_array.cc",
+        "src/core/lib/surface/server.cc",
+        "src/core/lib/surface/validate_metadata.cc",
+        "src/core/lib/surface/version.cc",
+        "src/core/lib/transport/bdp_estimator.cc",
+        "src/core/lib/transport/byte_stream.cc",
+        "src/core/lib/transport/connectivity_state.cc",
+        "src/core/lib/transport/error_utils.cc",
+        "src/core/lib/transport/metadata.cc",
+        "src/core/lib/transport/metadata_batch.cc",
+        "src/core/lib/transport/pid_controller.cc",
+        "src/core/lib/transport/service_config.cc",
+        "src/core/lib/transport/static_metadata.cc",
+        "src/core/lib/transport/status_conversion.cc",
+        "src/core/lib/transport/timeout_encoding.cc",
+        "src/core/lib/transport/transport.cc",
+        "src/core/lib/transport/transport_op_string.cc",
     ],
     hdrs = [
         "src/core/lib/channel/channel_args.h",
@@ -817,7 +821,7 @@
     external_deps = [
         "zlib",
     ],
-    language = "c",
+    language = "c++",
     public_hdrs = GRPC_PUBLIC_HDRS,
     deps = [
         "gpr_base",
@@ -839,7 +843,7 @@
 
 grpc_cc_library(
     name = "grpc_common",
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         # standard plugins
@@ -865,26 +869,26 @@
 grpc_cc_library(
     name = "grpc_client_channel",
     srcs = [
-        "src/core/ext/filters/client_channel/channel_connectivity.c",
-        "src/core/ext/filters/client_channel/client_channel.c",
-        "src/core/ext/filters/client_channel/client_channel_factory.c",
-        "src/core/ext/filters/client_channel/client_channel_plugin.c",
-        "src/core/ext/filters/client_channel/connector.c",
-        "src/core/ext/filters/client_channel/http_connect_handshaker.c",
-        "src/core/ext/filters/client_channel/http_proxy.c",
-        "src/core/ext/filters/client_channel/lb_policy.c",
-        "src/core/ext/filters/client_channel/lb_policy_factory.c",
-        "src/core/ext/filters/client_channel/lb_policy_registry.c",
-        "src/core/ext/filters/client_channel/parse_address.c",
-        "src/core/ext/filters/client_channel/proxy_mapper.c",
-        "src/core/ext/filters/client_channel/proxy_mapper_registry.c",
-        "src/core/ext/filters/client_channel/resolver.c",
-        "src/core/ext/filters/client_channel/resolver_factory.c",
-        "src/core/ext/filters/client_channel/resolver_registry.c",
-        "src/core/ext/filters/client_channel/retry_throttle.c",
-        "src/core/ext/filters/client_channel/subchannel.c",
-        "src/core/ext/filters/client_channel/subchannel_index.c",
-        "src/core/ext/filters/client_channel/uri_parser.c",
+        "src/core/ext/filters/client_channel/channel_connectivity.cc",
+        "src/core/ext/filters/client_channel/client_channel.cc",
+        "src/core/ext/filters/client_channel/client_channel_factory.cc",
+        "src/core/ext/filters/client_channel/client_channel_plugin.cc",
+        "src/core/ext/filters/client_channel/connector.cc",
+        "src/core/ext/filters/client_channel/http_connect_handshaker.cc",
+        "src/core/ext/filters/client_channel/http_proxy.cc",
+        "src/core/ext/filters/client_channel/lb_policy.cc",
+        "src/core/ext/filters/client_channel/lb_policy_factory.cc",
+        "src/core/ext/filters/client_channel/lb_policy_registry.cc",
+        "src/core/ext/filters/client_channel/parse_address.cc",
+        "src/core/ext/filters/client_channel/proxy_mapper.cc",
+        "src/core/ext/filters/client_channel/proxy_mapper_registry.cc",
+        "src/core/ext/filters/client_channel/resolver.cc",
+        "src/core/ext/filters/client_channel/resolver_factory.cc",
+        "src/core/ext/filters/client_channel/resolver_registry.cc",
+        "src/core/ext/filters/client_channel/retry_throttle.cc",
+        "src/core/ext/filters/client_channel/subchannel.cc",
+        "src/core/ext/filters/client_channel/subchannel_index.cc",
+        "src/core/ext/filters/client_channel/uri_parser.cc",
     ],
     hdrs = [
         "src/core/ext/filters/client_channel/client_channel.h",
@@ -906,7 +910,7 @@
         "src/core/ext/filters/client_channel/subchannel_index.h",
         "src/core/ext/filters/client_channel/uri_parser.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_deadline_filter",
@@ -916,12 +920,12 @@
 grpc_cc_library(
     name = "grpc_max_age_filter",
     srcs = [
-        "src/core/ext/filters/max_age/max_age_filter.c",
+        "src/core/ext/filters/max_age/max_age_filter.cc",
     ],
     hdrs = [
         "src/core/ext/filters/max_age/max_age_filter.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
     ],
@@ -930,12 +934,12 @@
 grpc_cc_library(
     name = "grpc_deadline_filter",
     srcs = [
-        "src/core/ext/filters/deadline/deadline_filter.c",
+        "src/core/ext/filters/deadline/deadline_filter.cc",
     ],
     hdrs = [
         "src/core/ext/filters/deadline/deadline_filter.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
     ],
@@ -944,12 +948,12 @@
 grpc_cc_library(
     name = "grpc_message_size_filter",
     srcs = [
-        "src/core/ext/filters/message_size/message_size_filter.c",
+        "src/core/ext/filters/message_size/message_size_filter.cc",
     ],
     hdrs = [
         "src/core/ext/filters/message_size/message_size_filter.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
     ],
@@ -958,17 +962,17 @@
 grpc_cc_library(
     name = "grpc_http_filters",
     srcs = [
-        "src/core/ext/filters/http/client/http_client_filter.c",
-        "src/core/ext/filters/http/http_filters_plugin.c",
-        "src/core/ext/filters/http/message_compress/message_compress_filter.c",
-        "src/core/ext/filters/http/server/http_server_filter.c",
+        "src/core/ext/filters/http/client/http_client_filter.cc",
+        "src/core/ext/filters/http/http_filters_plugin.cc",
+        "src/core/ext/filters/http/message_compress/message_compress_filter.cc",
+        "src/core/ext/filters/http/server/http_server_filter.cc",
     ],
     hdrs = [
         "src/core/ext/filters/http/client/http_client_filter.h",
         "src/core/ext/filters/http/message_compress/message_compress_filter.h",
         "src/core/ext/filters/http/server/http_server_filter.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
     ],
@@ -977,12 +981,12 @@
 grpc_cc_library(
     name = "grpc_workaround_cronet_compression_filter",
     srcs = [
-        "src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c",
+        "src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc",
     ],
     hdrs = [
         "src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_server_backward_compatibility",
@@ -991,7 +995,7 @@
 
 grpc_cc_library(
     name = "grpc_codegen",
-    language = "c",
+    language = "c++",
     public_hdrs = [
         "include/grpc/impl/codegen/byte_buffer.h",
         "include/grpc/impl/codegen/byte_buffer_reader.h",
@@ -1011,11 +1015,11 @@
 grpc_cc_library(
     name = "grpc_lb_policy_grpclb",
     srcs = [
-        "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c",
-        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c",
-        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.c",
-        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c",
-        "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c",
+        "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc",
+        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc",
+        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.cc",
+        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc",
+        "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc",
         "src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c",
     ],
     hdrs = [
@@ -1029,7 +1033,7 @@
     external_deps = [
         "nanopb",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_client_channel",
@@ -1040,11 +1044,11 @@
 grpc_cc_library(
     name = "grpc_lb_policy_grpclb_secure",
     srcs = [
-        "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c",
-        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c",
-        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c",
-        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c",
-        "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c",
+        "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc",
+        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc",
+        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc",
+        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc",
+        "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc",
         "src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c",
     ],
     hdrs = [
@@ -1058,7 +1062,7 @@
     external_deps = [
         "nanopb",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_client_channel",
@@ -1070,9 +1074,9 @@
 grpc_cc_library(
     name = "grpc_lb_policy_pick_first",
     srcs = [
-        "src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c",
+        "src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_client_channel",
@@ -1082,9 +1086,9 @@
 grpc_cc_library(
     name = "grpc_lb_policy_round_robin",
     srcs = [
-        "src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c",
+        "src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_client_channel",
@@ -1094,14 +1098,14 @@
 grpc_cc_library(
     name = "grpc_server_load_reporting",
     srcs = [
-        "src/core/ext/filters/load_reporting/server_load_reporting_filter.c",
-        "src/core/ext/filters/load_reporting/server_load_reporting_plugin.c",
+        "src/core/ext/filters/load_reporting/server_load_reporting_filter.cc",
+        "src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc",
     ],
     hdrs = [
         "src/core/ext/filters/load_reporting/server_load_reporting_filter.h",
         "src/core/ext/filters/load_reporting/server_load_reporting_plugin.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
     ],
@@ -1110,9 +1114,9 @@
 grpc_cc_library(
     name = "grpc_resolver_dns_native",
     srcs = [
-        "src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c",
+        "src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_client_channel",
@@ -1122,10 +1126,10 @@
 grpc_cc_library(
     name = "grpc_resolver_dns_ares",
     srcs = [
-        "src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c",
-        "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c",
-        "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c",
-        "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c",
+        "src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc",
+        "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc",
+        "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc",
+        "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc",
     ],
     hdrs = [
         "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h",
@@ -1134,7 +1138,7 @@
     external_deps = [
         "cares",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_client_channel",
@@ -1144,9 +1148,9 @@
 grpc_cc_library(
     name = "grpc_resolver_sockaddr",
     srcs = [
-        "src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c",
+        "src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_client_channel",
@@ -1155,9 +1159,9 @@
 
 grpc_cc_library(
     name = "grpc_resolver_fake",
-    srcs = ["src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c"],
+    srcs = ["src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc"],
     hdrs = ["src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h"],
-    language = "c",
+    language = "c++",
     visibility = ["//test:__subpackages__"],
     deps = [
         "grpc_base",
@@ -1168,30 +1172,30 @@
 grpc_cc_library(
     name = "grpc_secure",
     srcs = [
-        "src/core/lib/http/httpcli_security_connector.c",
-        "src/core/lib/security/context/security_context.c",
-        "src/core/lib/security/credentials/composite/composite_credentials.c",
-        "src/core/lib/security/credentials/credentials.c",
-        "src/core/lib/security/credentials/credentials_metadata.c",
-        "src/core/lib/security/credentials/fake/fake_credentials.c",
-        "src/core/lib/security/credentials/google_default/credentials_generic.c",
-        "src/core/lib/security/credentials/google_default/google_default_credentials.c",
-        "src/core/lib/security/credentials/iam/iam_credentials.c",
-        "src/core/lib/security/credentials/jwt/json_token.c",
-        "src/core/lib/security/credentials/jwt/jwt_credentials.c",
-        "src/core/lib/security/credentials/jwt/jwt_verifier.c",
-        "src/core/lib/security/credentials/oauth2/oauth2_credentials.c",
-        "src/core/lib/security/credentials/plugin/plugin_credentials.c",
-        "src/core/lib/security/credentials/ssl/ssl_credentials.c",
-        "src/core/lib/security/transport/client_auth_filter.c",
-        "src/core/lib/security/transport/lb_targets_info.c",
-        "src/core/lib/security/transport/secure_endpoint.c",
-        "src/core/lib/security/transport/security_connector.c",
-        "src/core/lib/security/transport/security_handshaker.c",
-        "src/core/lib/security/transport/server_auth_filter.c",
-        "src/core/lib/security/transport/tsi_error.c",
-        "src/core/lib/security/util/json_util.c",
-        "src/core/lib/surface/init_secure.c",
+        "src/core/lib/http/httpcli_security_connector.cc",
+        "src/core/lib/security/context/security_context.cc",
+        "src/core/lib/security/credentials/composite/composite_credentials.cc",
+        "src/core/lib/security/credentials/credentials.cc",
+        "src/core/lib/security/credentials/credentials_metadata.cc",
+        "src/core/lib/security/credentials/fake/fake_credentials.cc",
+        "src/core/lib/security/credentials/google_default/credentials_generic.cc",
+        "src/core/lib/security/credentials/google_default/google_default_credentials.cc",
+        "src/core/lib/security/credentials/iam/iam_credentials.cc",
+        "src/core/lib/security/credentials/jwt/json_token.cc",
+        "src/core/lib/security/credentials/jwt/jwt_credentials.cc",
+        "src/core/lib/security/credentials/jwt/jwt_verifier.cc",
+        "src/core/lib/security/credentials/oauth2/oauth2_credentials.cc",
+        "src/core/lib/security/credentials/plugin/plugin_credentials.cc",
+        "src/core/lib/security/credentials/ssl/ssl_credentials.cc",
+        "src/core/lib/security/transport/client_auth_filter.cc",
+        "src/core/lib/security/transport/lb_targets_info.cc",
+        "src/core/lib/security/transport/secure_endpoint.cc",
+        "src/core/lib/security/transport/security_connector.cc",
+        "src/core/lib/security/transport/security_handshaker.cc",
+        "src/core/lib/security/transport/server_auth_filter.cc",
+        "src/core/lib/security/transport/tsi_error.cc",
+        "src/core/lib/security/util/json_util.cc",
+        "src/core/lib/surface/init_secure.cc",
     ],
     hdrs = [
         "src/core/lib/security/context/security_context.h",
@@ -1214,7 +1218,7 @@
         "src/core/lib/security/transport/tsi_error.h",
         "src/core/lib/security/util/json_util.h",
     ],
-    language = "c",
+    language = "c++",
     public_hdrs = GRPC_SECURE_PUBLIC_HDRS,
     deps = [
         "grpc_base",
@@ -1226,28 +1230,28 @@
 grpc_cc_library(
     name = "grpc_transport_chttp2",
     srcs = [
-        "src/core/ext/transport/chttp2/transport/bin_decoder.c",
-        "src/core/ext/transport/chttp2/transport/bin_encoder.c",
-        "src/core/ext/transport/chttp2/transport/chttp2_plugin.c",
-        "src/core/ext/transport/chttp2/transport/chttp2_transport.c",
-        "src/core/ext/transport/chttp2/transport/flow_control.c",
-        "src/core/ext/transport/chttp2/transport/frame_data.c",
-        "src/core/ext/transport/chttp2/transport/frame_goaway.c",
-        "src/core/ext/transport/chttp2/transport/frame_ping.c",
-        "src/core/ext/transport/chttp2/transport/frame_rst_stream.c",
-        "src/core/ext/transport/chttp2/transport/frame_settings.c",
-        "src/core/ext/transport/chttp2/transport/frame_window_update.c",
-        "src/core/ext/transport/chttp2/transport/hpack_encoder.c",
-        "src/core/ext/transport/chttp2/transport/hpack_parser.c",
-        "src/core/ext/transport/chttp2/transport/hpack_table.c",
-        "src/core/ext/transport/chttp2/transport/http2_settings.c",
-        "src/core/ext/transport/chttp2/transport/huffsyms.c",
-        "src/core/ext/transport/chttp2/transport/incoming_metadata.c",
-        "src/core/ext/transport/chttp2/transport/parsing.c",
-        "src/core/ext/transport/chttp2/transport/stream_lists.c",
-        "src/core/ext/transport/chttp2/transport/stream_map.c",
-        "src/core/ext/transport/chttp2/transport/varint.c",
-        "src/core/ext/transport/chttp2/transport/writing.c",
+        "src/core/ext/transport/chttp2/transport/bin_decoder.cc",
+        "src/core/ext/transport/chttp2/transport/bin_encoder.cc",
+        "src/core/ext/transport/chttp2/transport/chttp2_plugin.cc",
+        "src/core/ext/transport/chttp2/transport/chttp2_transport.cc",
+        "src/core/ext/transport/chttp2/transport/flow_control.cc",
+        "src/core/ext/transport/chttp2/transport/frame_data.cc",
+        "src/core/ext/transport/chttp2/transport/frame_goaway.cc",
+        "src/core/ext/transport/chttp2/transport/frame_ping.cc",
+        "src/core/ext/transport/chttp2/transport/frame_rst_stream.cc",
+        "src/core/ext/transport/chttp2/transport/frame_settings.cc",
+        "src/core/ext/transport/chttp2/transport/frame_window_update.cc",
+        "src/core/ext/transport/chttp2/transport/hpack_encoder.cc",
+        "src/core/ext/transport/chttp2/transport/hpack_parser.cc",
+        "src/core/ext/transport/chttp2/transport/hpack_table.cc",
+        "src/core/ext/transport/chttp2/transport/http2_settings.cc",
+        "src/core/ext/transport/chttp2/transport/huffsyms.cc",
+        "src/core/ext/transport/chttp2/transport/incoming_metadata.cc",
+        "src/core/ext/transport/chttp2/transport/parsing.cc",
+        "src/core/ext/transport/chttp2/transport/stream_lists.cc",
+        "src/core/ext/transport/chttp2/transport/stream_map.cc",
+        "src/core/ext/transport/chttp2/transport/varint.cc",
+        "src/core/ext/transport/chttp2/transport/writing.cc",
     ],
     hdrs = [
         "src/core/ext/transport/chttp2/transport/bin_decoder.h",
@@ -1270,7 +1274,7 @@
         "src/core/ext/transport/chttp2/transport/stream_map.h",
         "src/core/ext/transport/chttp2/transport/varint.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_http_filters",
@@ -1281,12 +1285,12 @@
 grpc_cc_library(
     name = "grpc_transport_chttp2_alpn",
     srcs = [
-        "src/core/ext/transport/chttp2/alpn/alpn.c",
+        "src/core/ext/transport/chttp2/alpn/alpn.cc",
     ],
     hdrs = [
         "src/core/ext/transport/chttp2/alpn/alpn.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "gpr",
     ],
@@ -1295,12 +1299,12 @@
 grpc_cc_library(
     name = "grpc_transport_chttp2_client_connector",
     srcs = [
-        "src/core/ext/transport/chttp2/client/chttp2_connector.c",
+        "src/core/ext/transport/chttp2/client/chttp2_connector.cc",
     ],
     hdrs = [
         "src/core/ext/transport/chttp2/client/chttp2_connector.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_client_channel",
@@ -1311,10 +1315,10 @@
 grpc_cc_library(
     name = "grpc_transport_chttp2_client_insecure",
     srcs = [
-        "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
-        "src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c",
+        "src/core/ext/transport/chttp2/client/insecure/channel_create.cc",
+        "src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_client_channel",
@@ -1326,9 +1330,9 @@
 grpc_cc_library(
     name = "grpc_transport_chttp2_client_secure",
     srcs = [
-        "src/core/ext/transport/chttp2/client/secure/secure_channel_create.c",
+        "src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_client_channel",
@@ -1341,12 +1345,12 @@
 grpc_cc_library(
     name = "grpc_transport_chttp2_server",
     srcs = [
-        "src/core/ext/transport/chttp2/server/chttp2_server.c",
+        "src/core/ext/transport/chttp2/server/chttp2_server.cc",
     ],
     hdrs = [
         "src/core/ext/transport/chttp2/server/chttp2_server.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_transport_chttp2",
@@ -1356,10 +1360,10 @@
 grpc_cc_library(
     name = "grpc_transport_chttp2_server_insecure",
     srcs = [
-        "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c",
-        "src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c",
+        "src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc",
+        "src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_transport_chttp2",
@@ -1370,9 +1374,9 @@
 grpc_cc_library(
     name = "grpc_transport_chttp2_server_secure",
     srcs = [
-        "src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c",
+        "src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_secure",
@@ -1384,15 +1388,15 @@
 grpc_cc_library(
     name = "grpc_transport_cronet_client_secure",
     srcs = [
-        "src/core/ext/transport/cronet/client/secure/cronet_channel_create.c",
-        "src/core/ext/transport/cronet/transport/cronet_api_dummy.c",
-        "src/core/ext/transport/cronet/transport/cronet_transport.c",
+        "src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc",
+        "src/core/ext/transport/cronet/transport/cronet_api_dummy.cc",
+        "src/core/ext/transport/cronet/transport/cronet_transport.cc",
     ],
     hdrs = [
         "src/core/ext/transport/cronet/transport/cronet_transport.h",
         "third_party/objective_c/Cronet/bidirectional_stream_c.h",
     ],
-    language = "c",
+    language = "c++",
     public_hdrs = [
         "include/grpc/grpc_cronet.h",
         "include/grpc/grpc_security.h",
@@ -1407,13 +1411,13 @@
 grpc_cc_library(
     name = "grpc_transport_inproc",
     srcs = [
-        "src/core/ext/transport/inproc/inproc_plugin.c",
-        "src/core/ext/transport/inproc/inproc_transport.c",
+        "src/core/ext/transport/inproc/inproc_plugin.cc",
+        "src/core/ext/transport/inproc/inproc_transport.cc",
     ],
     hdrs = [
         "src/core/ext/transport/inproc/inproc_transport.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
     ],
@@ -1422,15 +1426,15 @@
 grpc_cc_library(
     name = "tsi_interface",
     srcs = [
-        "src/core/tsi/transport_security.c",
-        "src/core/tsi/transport_security_adapter.c",
+        "src/core/tsi/transport_security.cc",
+        "src/core/tsi/transport_security_adapter.cc",
     ],
     hdrs = [
         "src/core/tsi/transport_security.h",
         "src/core/tsi/transport_security_adapter.h",
         "src/core/tsi/transport_security_interface.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "gpr",
         "grpc_trace",
@@ -1440,10 +1444,10 @@
 grpc_cc_library(
     name = "tsi",
     srcs = [
-        "src/core/tsi/fake_transport_security.c",
-        "src/core/tsi/gts_transport_security.c",
-        "src/core/tsi/ssl_transport_security.c",
-        "src/core/tsi/transport_security_grpc.c",
+        "src/core/tsi/fake_transport_security.cc",
+        "src/core/tsi/gts_transport_security.cc",
+        "src/core/tsi/ssl_transport_security.cc",
+        "src/core/tsi/transport_security_grpc.cc",
     ],
     hdrs = [
         "src/core/tsi/fake_transport_security.h",
@@ -1455,7 +1459,7 @@
     external_deps = [
         "libssl",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "tsi_interface",
@@ -1594,12 +1598,12 @@
 grpc_cc_library(
     name = "grpc_server_backward_compatibility",
     srcs = [
-        "src/core/ext/filters/workarounds/workaround_utils.c",
+        "src/core/ext/filters/workarounds/workaround_utils.cc",
     ],
     hdrs = [
         "src/core/ext/filters/workarounds/workaround_utils.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
     ],
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2e448c9..759d49b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -24,7 +24,7 @@
 cmake_minimum_required(VERSION 2.8)
 
 set(PACKAGE_NAME      "grpc")
-set(PACKAGE_VERSION   "1.7.0-dev")
+set(PACKAGE_VERSION   "1.8.0-dev")
 set(PACKAGE_STRING    "${PACKAGE_NAME} ${PACKAGE_VERSION}")
 set(PACKAGE_TARNAME   "${PACKAGE_NAME}-${PACKAGE_VERSION}")
 set(PACKAGE_BUGREPORT "https://github.com/grpc/grpc/issues/")
@@ -780,52 +780,52 @@
 
 
 add_library(gpr
-  src/core/lib/profiling/basic_timers.c
-  src/core/lib/profiling/stap_timers.c
-  src/core/lib/support/alloc.c
-  src/core/lib/support/arena.c
-  src/core/lib/support/atm.c
-  src/core/lib/support/avl.c
-  src/core/lib/support/backoff.c
-  src/core/lib/support/cmdline.c
-  src/core/lib/support/cpu_iphone.c
-  src/core/lib/support/cpu_linux.c
-  src/core/lib/support/cpu_posix.c
-  src/core/lib/support/cpu_windows.c
-  src/core/lib/support/env_linux.c
-  src/core/lib/support/env_posix.c
-  src/core/lib/support/env_windows.c
-  src/core/lib/support/histogram.c
-  src/core/lib/support/host_port.c
-  src/core/lib/support/log.c
-  src/core/lib/support/log_android.c
-  src/core/lib/support/log_linux.c
-  src/core/lib/support/log_posix.c
-  src/core/lib/support/log_windows.c
-  src/core/lib/support/mpscq.c
-  src/core/lib/support/murmur_hash.c
-  src/core/lib/support/stack_lockfree.c
-  src/core/lib/support/string.c
-  src/core/lib/support/string_posix.c
-  src/core/lib/support/string_util_windows.c
-  src/core/lib/support/string_windows.c
-  src/core/lib/support/subprocess_posix.c
-  src/core/lib/support/subprocess_windows.c
-  src/core/lib/support/sync.c
-  src/core/lib/support/sync_posix.c
-  src/core/lib/support/sync_windows.c
-  src/core/lib/support/thd.c
-  src/core/lib/support/thd_posix.c
-  src/core/lib/support/thd_windows.c
-  src/core/lib/support/time.c
-  src/core/lib/support/time_posix.c
-  src/core/lib/support/time_precise.c
-  src/core/lib/support/time_windows.c
-  src/core/lib/support/tls_pthread.c
-  src/core/lib/support/tmpfile_msys.c
-  src/core/lib/support/tmpfile_posix.c
-  src/core/lib/support/tmpfile_windows.c
-  src/core/lib/support/wrap_memcpy.c
+  src/core/lib/profiling/basic_timers.cc
+  src/core/lib/profiling/stap_timers.cc
+  src/core/lib/support/alloc.cc
+  src/core/lib/support/arena.cc
+  src/core/lib/support/atm.cc
+  src/core/lib/support/avl.cc
+  src/core/lib/support/backoff.cc
+  src/core/lib/support/cmdline.cc
+  src/core/lib/support/cpu_iphone.cc
+  src/core/lib/support/cpu_linux.cc
+  src/core/lib/support/cpu_posix.cc
+  src/core/lib/support/cpu_windows.cc
+  src/core/lib/support/env_linux.cc
+  src/core/lib/support/env_posix.cc
+  src/core/lib/support/env_windows.cc
+  src/core/lib/support/histogram.cc
+  src/core/lib/support/host_port.cc
+  src/core/lib/support/log.cc
+  src/core/lib/support/log_android.cc
+  src/core/lib/support/log_linux.cc
+  src/core/lib/support/log_posix.cc
+  src/core/lib/support/log_windows.cc
+  src/core/lib/support/mpscq.cc
+  src/core/lib/support/murmur_hash.cc
+  src/core/lib/support/stack_lockfree.cc
+  src/core/lib/support/string.cc
+  src/core/lib/support/string_posix.cc
+  src/core/lib/support/string_util_windows.cc
+  src/core/lib/support/string_windows.cc
+  src/core/lib/support/subprocess_posix.cc
+  src/core/lib/support/subprocess_windows.cc
+  src/core/lib/support/sync.cc
+  src/core/lib/support/sync_posix.cc
+  src/core/lib/support/sync_windows.cc
+  src/core/lib/support/thd.cc
+  src/core/lib/support/thd_posix.cc
+  src/core/lib/support/thd_windows.cc
+  src/core/lib/support/time.cc
+  src/core/lib/support/time_posix.cc
+  src/core/lib/support/time_precise.cc
+  src/core/lib/support/time_windows.cc
+  src/core/lib/support/tls_pthread.cc
+  src/core/lib/support/tmpfile_msys.cc
+  src/core/lib/support/tmpfile_posix.cc
+  src/core/lib/support/tmpfile_windows.cc
+  src/core/lib/support/wrap_memcpy.cc
 )
 
 if(WIN32 AND MSVC)
@@ -954,267 +954,267 @@
 endif (gRPC_BUILD_TESTS)
 
 add_library(grpc
-  src/core/lib/surface/init.c
-  src/core/lib/channel/channel_args.c
-  src/core/lib/channel/channel_stack.c
-  src/core/lib/channel/channel_stack_builder.c
-  src/core/lib/channel/connected_channel.c
-  src/core/lib/channel/handshaker.c
-  src/core/lib/channel/handshaker_factory.c
-  src/core/lib/channel/handshaker_registry.c
-  src/core/lib/compression/compression.c
-  src/core/lib/compression/message_compress.c
-  src/core/lib/compression/stream_compression.c
-  src/core/lib/compression/stream_compression_gzip.c
-  src/core/lib/compression/stream_compression_identity.c
-  src/core/lib/debug/stats.c
-  src/core/lib/debug/stats_data.c
-  src/core/lib/http/format_request.c
-  src/core/lib/http/httpcli.c
-  src/core/lib/http/parser.c
-  src/core/lib/iomgr/call_combiner.c
-  src/core/lib/iomgr/closure.c
-  src/core/lib/iomgr/combiner.c
-  src/core/lib/iomgr/endpoint.c
-  src/core/lib/iomgr/endpoint_pair_posix.c
-  src/core/lib/iomgr/endpoint_pair_uv.c
-  src/core/lib/iomgr/endpoint_pair_windows.c
-  src/core/lib/iomgr/error.c
-  src/core/lib/iomgr/ev_epoll1_linux.c
-  src/core/lib/iomgr/ev_epollex_linux.c
-  src/core/lib/iomgr/ev_epollsig_linux.c
-  src/core/lib/iomgr/ev_poll_posix.c
-  src/core/lib/iomgr/ev_posix.c
-  src/core/lib/iomgr/ev_windows.c
-  src/core/lib/iomgr/exec_ctx.c
-  src/core/lib/iomgr/executor.c
-  src/core/lib/iomgr/gethostname_fallback.c
-  src/core/lib/iomgr/gethostname_host_name_max.c
-  src/core/lib/iomgr/gethostname_sysconf.c
-  src/core/lib/iomgr/iocp_windows.c
-  src/core/lib/iomgr/iomgr.c
-  src/core/lib/iomgr/iomgr_posix.c
-  src/core/lib/iomgr/iomgr_uv.c
-  src/core/lib/iomgr/iomgr_windows.c
-  src/core/lib/iomgr/is_epollexclusive_available.c
-  src/core/lib/iomgr/load_file.c
-  src/core/lib/iomgr/lockfree_event.c
-  src/core/lib/iomgr/network_status_tracker.c
-  src/core/lib/iomgr/polling_entity.c
-  src/core/lib/iomgr/pollset_set_uv.c
-  src/core/lib/iomgr/pollset_set_windows.c
-  src/core/lib/iomgr/pollset_uv.c
-  src/core/lib/iomgr/pollset_windows.c
-  src/core/lib/iomgr/resolve_address_posix.c
-  src/core/lib/iomgr/resolve_address_uv.c
-  src/core/lib/iomgr/resolve_address_windows.c
-  src/core/lib/iomgr/resource_quota.c
-  src/core/lib/iomgr/sockaddr_utils.c
-  src/core/lib/iomgr/socket_factory_posix.c
-  src/core/lib/iomgr/socket_mutator.c
-  src/core/lib/iomgr/socket_utils_common_posix.c
-  src/core/lib/iomgr/socket_utils_linux.c
-  src/core/lib/iomgr/socket_utils_posix.c
-  src/core/lib/iomgr/socket_utils_uv.c
-  src/core/lib/iomgr/socket_utils_windows.c
-  src/core/lib/iomgr/socket_windows.c
-  src/core/lib/iomgr/tcp_client_posix.c
-  src/core/lib/iomgr/tcp_client_uv.c
-  src/core/lib/iomgr/tcp_client_windows.c
-  src/core/lib/iomgr/tcp_posix.c
-  src/core/lib/iomgr/tcp_server_posix.c
-  src/core/lib/iomgr/tcp_server_utils_posix_common.c
-  src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c
-  src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c
-  src/core/lib/iomgr/tcp_server_uv.c
-  src/core/lib/iomgr/tcp_server_windows.c
-  src/core/lib/iomgr/tcp_uv.c
-  src/core/lib/iomgr/tcp_windows.c
-  src/core/lib/iomgr/time_averaged_stats.c
-  src/core/lib/iomgr/timer_generic.c
-  src/core/lib/iomgr/timer_heap.c
-  src/core/lib/iomgr/timer_manager.c
-  src/core/lib/iomgr/timer_uv.c
-  src/core/lib/iomgr/udp_server.c
-  src/core/lib/iomgr/unix_sockets_posix.c
-  src/core/lib/iomgr/unix_sockets_posix_noop.c
-  src/core/lib/iomgr/wakeup_fd_cv.c
-  src/core/lib/iomgr/wakeup_fd_eventfd.c
-  src/core/lib/iomgr/wakeup_fd_nospecial.c
-  src/core/lib/iomgr/wakeup_fd_pipe.c
-  src/core/lib/iomgr/wakeup_fd_posix.c
-  src/core/lib/json/json.c
-  src/core/lib/json/json_reader.c
-  src/core/lib/json/json_string.c
-  src/core/lib/json/json_writer.c
-  src/core/lib/slice/b64.c
-  src/core/lib/slice/percent_encoding.c
-  src/core/lib/slice/slice.c
-  src/core/lib/slice/slice_buffer.c
-  src/core/lib/slice/slice_hash_table.c
-  src/core/lib/slice/slice_intern.c
-  src/core/lib/slice/slice_string_helpers.c
-  src/core/lib/surface/alarm.c
-  src/core/lib/surface/api_trace.c
-  src/core/lib/surface/byte_buffer.c
-  src/core/lib/surface/byte_buffer_reader.c
-  src/core/lib/surface/call.c
-  src/core/lib/surface/call_details.c
-  src/core/lib/surface/call_log_batch.c
-  src/core/lib/surface/channel.c
-  src/core/lib/surface/channel_init.c
-  src/core/lib/surface/channel_ping.c
-  src/core/lib/surface/channel_stack_type.c
-  src/core/lib/surface/completion_queue.c
-  src/core/lib/surface/completion_queue_factory.c
-  src/core/lib/surface/event_string.c
+  src/core/lib/surface/init.cc
+  src/core/lib/channel/channel_args.cc
+  src/core/lib/channel/channel_stack.cc
+  src/core/lib/channel/channel_stack_builder.cc
+  src/core/lib/channel/connected_channel.cc
+  src/core/lib/channel/handshaker.cc
+  src/core/lib/channel/handshaker_factory.cc
+  src/core/lib/channel/handshaker_registry.cc
+  src/core/lib/compression/compression.cc
+  src/core/lib/compression/message_compress.cc
+  src/core/lib/compression/stream_compression.cc
+  src/core/lib/compression/stream_compression_gzip.cc
+  src/core/lib/compression/stream_compression_identity.cc
+  src/core/lib/debug/stats.cc
+  src/core/lib/debug/stats_data.cc
+  src/core/lib/http/format_request.cc
+  src/core/lib/http/httpcli.cc
+  src/core/lib/http/parser.cc
+  src/core/lib/iomgr/call_combiner.cc
+  src/core/lib/iomgr/closure.cc
+  src/core/lib/iomgr/combiner.cc
+  src/core/lib/iomgr/endpoint.cc
+  src/core/lib/iomgr/endpoint_pair_posix.cc
+  src/core/lib/iomgr/endpoint_pair_uv.cc
+  src/core/lib/iomgr/endpoint_pair_windows.cc
+  src/core/lib/iomgr/error.cc
+  src/core/lib/iomgr/ev_epoll1_linux.cc
+  src/core/lib/iomgr/ev_epollex_linux.cc
+  src/core/lib/iomgr/ev_epollsig_linux.cc
+  src/core/lib/iomgr/ev_poll_posix.cc
+  src/core/lib/iomgr/ev_posix.cc
+  src/core/lib/iomgr/ev_windows.cc
+  src/core/lib/iomgr/exec_ctx.cc
+  src/core/lib/iomgr/executor.cc
+  src/core/lib/iomgr/gethostname_fallback.cc
+  src/core/lib/iomgr/gethostname_host_name_max.cc
+  src/core/lib/iomgr/gethostname_sysconf.cc
+  src/core/lib/iomgr/iocp_windows.cc
+  src/core/lib/iomgr/iomgr.cc
+  src/core/lib/iomgr/iomgr_posix.cc
+  src/core/lib/iomgr/iomgr_uv.cc
+  src/core/lib/iomgr/iomgr_windows.cc
+  src/core/lib/iomgr/is_epollexclusive_available.cc
+  src/core/lib/iomgr/load_file.cc
+  src/core/lib/iomgr/lockfree_event.cc
+  src/core/lib/iomgr/network_status_tracker.cc
+  src/core/lib/iomgr/polling_entity.cc
+  src/core/lib/iomgr/pollset_set_uv.cc
+  src/core/lib/iomgr/pollset_set_windows.cc
+  src/core/lib/iomgr/pollset_uv.cc
+  src/core/lib/iomgr/pollset_windows.cc
+  src/core/lib/iomgr/resolve_address_posix.cc
+  src/core/lib/iomgr/resolve_address_uv.cc
+  src/core/lib/iomgr/resolve_address_windows.cc
+  src/core/lib/iomgr/resource_quota.cc
+  src/core/lib/iomgr/sockaddr_utils.cc
+  src/core/lib/iomgr/socket_factory_posix.cc
+  src/core/lib/iomgr/socket_mutator.cc
+  src/core/lib/iomgr/socket_utils_common_posix.cc
+  src/core/lib/iomgr/socket_utils_linux.cc
+  src/core/lib/iomgr/socket_utils_posix.cc
+  src/core/lib/iomgr/socket_utils_uv.cc
+  src/core/lib/iomgr/socket_utils_windows.cc
+  src/core/lib/iomgr/socket_windows.cc
+  src/core/lib/iomgr/tcp_client_posix.cc
+  src/core/lib/iomgr/tcp_client_uv.cc
+  src/core/lib/iomgr/tcp_client_windows.cc
+  src/core/lib/iomgr/tcp_posix.cc
+  src/core/lib/iomgr/tcp_server_posix.cc
+  src/core/lib/iomgr/tcp_server_utils_posix_common.cc
+  src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc
+  src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc
+  src/core/lib/iomgr/tcp_server_uv.cc
+  src/core/lib/iomgr/tcp_server_windows.cc
+  src/core/lib/iomgr/tcp_uv.cc
+  src/core/lib/iomgr/tcp_windows.cc
+  src/core/lib/iomgr/time_averaged_stats.cc
+  src/core/lib/iomgr/timer_generic.cc
+  src/core/lib/iomgr/timer_heap.cc
+  src/core/lib/iomgr/timer_manager.cc
+  src/core/lib/iomgr/timer_uv.cc
+  src/core/lib/iomgr/udp_server.cc
+  src/core/lib/iomgr/unix_sockets_posix.cc
+  src/core/lib/iomgr/unix_sockets_posix_noop.cc
+  src/core/lib/iomgr/wakeup_fd_cv.cc
+  src/core/lib/iomgr/wakeup_fd_eventfd.cc
+  src/core/lib/iomgr/wakeup_fd_nospecial.cc
+  src/core/lib/iomgr/wakeup_fd_pipe.cc
+  src/core/lib/iomgr/wakeup_fd_posix.cc
+  src/core/lib/json/json.cc
+  src/core/lib/json/json_reader.cc
+  src/core/lib/json/json_string.cc
+  src/core/lib/json/json_writer.cc
+  src/core/lib/slice/b64.cc
+  src/core/lib/slice/percent_encoding.cc
+  src/core/lib/slice/slice.cc
+  src/core/lib/slice/slice_buffer.cc
+  src/core/lib/slice/slice_hash_table.cc
+  src/core/lib/slice/slice_intern.cc
+  src/core/lib/slice/slice_string_helpers.cc
+  src/core/lib/surface/alarm.cc
+  src/core/lib/surface/api_trace.cc
+  src/core/lib/surface/byte_buffer.cc
+  src/core/lib/surface/byte_buffer_reader.cc
+  src/core/lib/surface/call.cc
+  src/core/lib/surface/call_details.cc
+  src/core/lib/surface/call_log_batch.cc
+  src/core/lib/surface/channel.cc
+  src/core/lib/surface/channel_init.cc
+  src/core/lib/surface/channel_ping.cc
+  src/core/lib/surface/channel_stack_type.cc
+  src/core/lib/surface/completion_queue.cc
+  src/core/lib/surface/completion_queue_factory.cc
+  src/core/lib/surface/event_string.cc
   src/core/lib/surface/lame_client.cc
-  src/core/lib/surface/metadata_array.c
-  src/core/lib/surface/server.c
-  src/core/lib/surface/validate_metadata.c
-  src/core/lib/surface/version.c
-  src/core/lib/transport/bdp_estimator.c
-  src/core/lib/transport/byte_stream.c
-  src/core/lib/transport/connectivity_state.c
-  src/core/lib/transport/error_utils.c
-  src/core/lib/transport/metadata.c
-  src/core/lib/transport/metadata_batch.c
-  src/core/lib/transport/pid_controller.c
-  src/core/lib/transport/service_config.c
-  src/core/lib/transport/static_metadata.c
-  src/core/lib/transport/status_conversion.c
-  src/core/lib/transport/timeout_encoding.c
-  src/core/lib/transport/transport.c
-  src/core/lib/transport/transport_op_string.c
-  src/core/lib/debug/trace.c
-  src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c
-  src/core/ext/transport/chttp2/transport/bin_decoder.c
-  src/core/ext/transport/chttp2/transport/bin_encoder.c
-  src/core/ext/transport/chttp2/transport/chttp2_plugin.c
-  src/core/ext/transport/chttp2/transport/chttp2_transport.c
-  src/core/ext/transport/chttp2/transport/flow_control.c
-  src/core/ext/transport/chttp2/transport/frame_data.c
-  src/core/ext/transport/chttp2/transport/frame_goaway.c
-  src/core/ext/transport/chttp2/transport/frame_ping.c
-  src/core/ext/transport/chttp2/transport/frame_rst_stream.c
-  src/core/ext/transport/chttp2/transport/frame_settings.c
-  src/core/ext/transport/chttp2/transport/frame_window_update.c
-  src/core/ext/transport/chttp2/transport/hpack_encoder.c
-  src/core/ext/transport/chttp2/transport/hpack_parser.c
-  src/core/ext/transport/chttp2/transport/hpack_table.c
-  src/core/ext/transport/chttp2/transport/http2_settings.c
-  src/core/ext/transport/chttp2/transport/huffsyms.c
-  src/core/ext/transport/chttp2/transport/incoming_metadata.c
-  src/core/ext/transport/chttp2/transport/parsing.c
-  src/core/ext/transport/chttp2/transport/stream_lists.c
-  src/core/ext/transport/chttp2/transport/stream_map.c
-  src/core/ext/transport/chttp2/transport/varint.c
-  src/core/ext/transport/chttp2/transport/writing.c
-  src/core/ext/transport/chttp2/alpn/alpn.c
-  src/core/ext/filters/http/client/http_client_filter.c
-  src/core/ext/filters/http/http_filters_plugin.c
-  src/core/ext/filters/http/message_compress/message_compress_filter.c
-  src/core/ext/filters/http/server/http_server_filter.c
-  src/core/lib/http/httpcli_security_connector.c
-  src/core/lib/security/context/security_context.c
-  src/core/lib/security/credentials/composite/composite_credentials.c
-  src/core/lib/security/credentials/credentials.c
-  src/core/lib/security/credentials/credentials_metadata.c
-  src/core/lib/security/credentials/fake/fake_credentials.c
-  src/core/lib/security/credentials/google_default/credentials_generic.c
-  src/core/lib/security/credentials/google_default/google_default_credentials.c
-  src/core/lib/security/credentials/iam/iam_credentials.c
-  src/core/lib/security/credentials/jwt/json_token.c
-  src/core/lib/security/credentials/jwt/jwt_credentials.c
-  src/core/lib/security/credentials/jwt/jwt_verifier.c
-  src/core/lib/security/credentials/oauth2/oauth2_credentials.c
-  src/core/lib/security/credentials/plugin/plugin_credentials.c
-  src/core/lib/security/credentials/ssl/ssl_credentials.c
-  src/core/lib/security/transport/client_auth_filter.c
-  src/core/lib/security/transport/lb_targets_info.c
-  src/core/lib/security/transport/secure_endpoint.c
-  src/core/lib/security/transport/security_connector.c
-  src/core/lib/security/transport/security_handshaker.c
-  src/core/lib/security/transport/server_auth_filter.c
-  src/core/lib/security/transport/tsi_error.c
-  src/core/lib/security/util/json_util.c
-  src/core/lib/surface/init_secure.c
-  src/core/tsi/fake_transport_security.c
-  src/core/tsi/gts_transport_security.c
-  src/core/tsi/ssl_transport_security.c
-  src/core/tsi/transport_security_grpc.c
-  src/core/tsi/transport_security.c
-  src/core/tsi/transport_security_adapter.c
-  src/core/ext/transport/chttp2/server/chttp2_server.c
-  src/core/ext/transport/chttp2/client/secure/secure_channel_create.c
-  src/core/ext/filters/client_channel/channel_connectivity.c
-  src/core/ext/filters/client_channel/client_channel.c
-  src/core/ext/filters/client_channel/client_channel_factory.c
-  src/core/ext/filters/client_channel/client_channel_plugin.c
-  src/core/ext/filters/client_channel/connector.c
-  src/core/ext/filters/client_channel/http_connect_handshaker.c
-  src/core/ext/filters/client_channel/http_proxy.c
-  src/core/ext/filters/client_channel/lb_policy.c
-  src/core/ext/filters/client_channel/lb_policy_factory.c
-  src/core/ext/filters/client_channel/lb_policy_registry.c
-  src/core/ext/filters/client_channel/parse_address.c
-  src/core/ext/filters/client_channel/proxy_mapper.c
-  src/core/ext/filters/client_channel/proxy_mapper_registry.c
-  src/core/ext/filters/client_channel/resolver.c
-  src/core/ext/filters/client_channel/resolver_factory.c
-  src/core/ext/filters/client_channel/resolver_registry.c
-  src/core/ext/filters/client_channel/retry_throttle.c
-  src/core/ext/filters/client_channel/subchannel.c
-  src/core/ext/filters/client_channel/subchannel_index.c
-  src/core/ext/filters/client_channel/uri_parser.c
-  src/core/ext/filters/deadline/deadline_filter.c
-  src/core/ext/transport/chttp2/client/chttp2_connector.c
-  src/core/ext/transport/chttp2/server/insecure/server_chttp2.c
-  src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c
-  src/core/ext/transport/chttp2/client/insecure/channel_create.c
-  src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c
-  src/core/ext/transport/inproc/inproc_plugin.c
-  src/core/ext/transport/inproc/inproc_transport.c
-  src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c
-  src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c
-  src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c
-  src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c
-  src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c
+  src/core/lib/surface/metadata_array.cc
+  src/core/lib/surface/server.cc
+  src/core/lib/surface/validate_metadata.cc
+  src/core/lib/surface/version.cc
+  src/core/lib/transport/bdp_estimator.cc
+  src/core/lib/transport/byte_stream.cc
+  src/core/lib/transport/connectivity_state.cc
+  src/core/lib/transport/error_utils.cc
+  src/core/lib/transport/metadata.cc
+  src/core/lib/transport/metadata_batch.cc
+  src/core/lib/transport/pid_controller.cc
+  src/core/lib/transport/service_config.cc
+  src/core/lib/transport/static_metadata.cc
+  src/core/lib/transport/status_conversion.cc
+  src/core/lib/transport/timeout_encoding.cc
+  src/core/lib/transport/transport.cc
+  src/core/lib/transport/transport_op_string.cc
+  src/core/lib/debug/trace.cc
+  src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc
+  src/core/ext/transport/chttp2/transport/bin_decoder.cc
+  src/core/ext/transport/chttp2/transport/bin_encoder.cc
+  src/core/ext/transport/chttp2/transport/chttp2_plugin.cc
+  src/core/ext/transport/chttp2/transport/chttp2_transport.cc
+  src/core/ext/transport/chttp2/transport/flow_control.cc
+  src/core/ext/transport/chttp2/transport/frame_data.cc
+  src/core/ext/transport/chttp2/transport/frame_goaway.cc
+  src/core/ext/transport/chttp2/transport/frame_ping.cc
+  src/core/ext/transport/chttp2/transport/frame_rst_stream.cc
+  src/core/ext/transport/chttp2/transport/frame_settings.cc
+  src/core/ext/transport/chttp2/transport/frame_window_update.cc
+  src/core/ext/transport/chttp2/transport/hpack_encoder.cc
+  src/core/ext/transport/chttp2/transport/hpack_parser.cc
+  src/core/ext/transport/chttp2/transport/hpack_table.cc
+  src/core/ext/transport/chttp2/transport/http2_settings.cc
+  src/core/ext/transport/chttp2/transport/huffsyms.cc
+  src/core/ext/transport/chttp2/transport/incoming_metadata.cc
+  src/core/ext/transport/chttp2/transport/parsing.cc
+  src/core/ext/transport/chttp2/transport/stream_lists.cc
+  src/core/ext/transport/chttp2/transport/stream_map.cc
+  src/core/ext/transport/chttp2/transport/varint.cc
+  src/core/ext/transport/chttp2/transport/writing.cc
+  src/core/ext/transport/chttp2/alpn/alpn.cc
+  src/core/ext/filters/http/client/http_client_filter.cc
+  src/core/ext/filters/http/http_filters_plugin.cc
+  src/core/ext/filters/http/message_compress/message_compress_filter.cc
+  src/core/ext/filters/http/server/http_server_filter.cc
+  src/core/lib/http/httpcli_security_connector.cc
+  src/core/lib/security/context/security_context.cc
+  src/core/lib/security/credentials/composite/composite_credentials.cc
+  src/core/lib/security/credentials/credentials.cc
+  src/core/lib/security/credentials/credentials_metadata.cc
+  src/core/lib/security/credentials/fake/fake_credentials.cc
+  src/core/lib/security/credentials/google_default/credentials_generic.cc
+  src/core/lib/security/credentials/google_default/google_default_credentials.cc
+  src/core/lib/security/credentials/iam/iam_credentials.cc
+  src/core/lib/security/credentials/jwt/json_token.cc
+  src/core/lib/security/credentials/jwt/jwt_credentials.cc
+  src/core/lib/security/credentials/jwt/jwt_verifier.cc
+  src/core/lib/security/credentials/oauth2/oauth2_credentials.cc
+  src/core/lib/security/credentials/plugin/plugin_credentials.cc
+  src/core/lib/security/credentials/ssl/ssl_credentials.cc
+  src/core/lib/security/transport/client_auth_filter.cc
+  src/core/lib/security/transport/lb_targets_info.cc
+  src/core/lib/security/transport/secure_endpoint.cc
+  src/core/lib/security/transport/security_connector.cc
+  src/core/lib/security/transport/security_handshaker.cc
+  src/core/lib/security/transport/server_auth_filter.cc
+  src/core/lib/security/transport/tsi_error.cc
+  src/core/lib/security/util/json_util.cc
+  src/core/lib/surface/init_secure.cc
+  src/core/tsi/fake_transport_security.cc
+  src/core/tsi/gts_transport_security.cc
+  src/core/tsi/ssl_transport_security.cc
+  src/core/tsi/transport_security_grpc.cc
+  src/core/tsi/transport_security.cc
+  src/core/tsi/transport_security_adapter.cc
+  src/core/ext/transport/chttp2/server/chttp2_server.cc
+  src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc
+  src/core/ext/filters/client_channel/channel_connectivity.cc
+  src/core/ext/filters/client_channel/client_channel.cc
+  src/core/ext/filters/client_channel/client_channel_factory.cc
+  src/core/ext/filters/client_channel/client_channel_plugin.cc
+  src/core/ext/filters/client_channel/connector.cc
+  src/core/ext/filters/client_channel/http_connect_handshaker.cc
+  src/core/ext/filters/client_channel/http_proxy.cc
+  src/core/ext/filters/client_channel/lb_policy.cc
+  src/core/ext/filters/client_channel/lb_policy_factory.cc
+  src/core/ext/filters/client_channel/lb_policy_registry.cc
+  src/core/ext/filters/client_channel/parse_address.cc
+  src/core/ext/filters/client_channel/proxy_mapper.cc
+  src/core/ext/filters/client_channel/proxy_mapper_registry.cc
+  src/core/ext/filters/client_channel/resolver.cc
+  src/core/ext/filters/client_channel/resolver_factory.cc
+  src/core/ext/filters/client_channel/resolver_registry.cc
+  src/core/ext/filters/client_channel/retry_throttle.cc
+  src/core/ext/filters/client_channel/subchannel.cc
+  src/core/ext/filters/client_channel/subchannel_index.cc
+  src/core/ext/filters/client_channel/uri_parser.cc
+  src/core/ext/filters/deadline/deadline_filter.cc
+  src/core/ext/transport/chttp2/client/chttp2_connector.cc
+  src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc
+  src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc
+  src/core/ext/transport/chttp2/client/insecure/channel_create.cc
+  src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc
+  src/core/ext/transport/inproc/inproc_plugin.cc
+  src/core/ext/transport/inproc/inproc_transport.cc
+  src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc
+  src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc
+  src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc
+  src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc
+  src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc
   src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c
   third_party/nanopb/pb_common.c
   third_party/nanopb/pb_decode.c
   third_party/nanopb/pb_encode.c
-  src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c
-  src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c
-  src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c
-  src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c
-  src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c
-  src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c
-  src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c
-  src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c
-  src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c
-  src/core/ext/filters/load_reporting/server_load_reporting_filter.c
-  src/core/ext/filters/load_reporting/server_load_reporting_plugin.c
-  src/core/ext/census/base_resources.c
-  src/core/ext/census/context.c
+  src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc
+  src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc
+  src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc
+  src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc
+  src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc
+  src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc
+  src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc
+  src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc
+  src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc
+  src/core/ext/filters/load_reporting/server_load_reporting_filter.cc
+  src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc
+  src/core/ext/census/base_resources.cc
+  src/core/ext/census/context.cc
   src/core/ext/census/gen/census.pb.c
   src/core/ext/census/gen/trace_context.pb.c
-  src/core/ext/census/grpc_context.c
-  src/core/ext/census/grpc_filter.c
-  src/core/ext/census/grpc_plugin.c
-  src/core/ext/census/initialize.c
-  src/core/ext/census/intrusive_hash_map.c
-  src/core/ext/census/mlog.c
-  src/core/ext/census/operation.c
-  src/core/ext/census/placeholders.c
-  src/core/ext/census/resource.c
-  src/core/ext/census/trace_context.c
-  src/core/ext/census/tracing.c
-  src/core/ext/filters/max_age/max_age_filter.c
-  src/core/ext/filters/message_size/message_size_filter.c
-  src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c
-  src/core/ext/filters/workarounds/workaround_utils.c
-  src/core/plugin_registry/grpc_plugin_registry.c
+  src/core/ext/census/grpc_context.cc
+  src/core/ext/census/grpc_filter.cc
+  src/core/ext/census/grpc_plugin.cc
+  src/core/ext/census/initialize.cc
+  src/core/ext/census/intrusive_hash_map.cc
+  src/core/ext/census/mlog.cc
+  src/core/ext/census/operation.cc
+  src/core/ext/census/placeholders.cc
+  src/core/ext/census/resource.cc
+  src/core/ext/census/trace_context.cc
+  src/core/ext/census/tracing.cc
+  src/core/ext/filters/max_age/max_age_filter.cc
+  src/core/ext/filters/message_size/message_size_filter.cc
+  src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc
+  src/core/ext/filters/workarounds/workaround_utils.cc
+  src/core/plugin_registry/grpc_plugin_registry.cc
 )
 
 if(WIN32 AND MSVC)
@@ -1305,225 +1305,225 @@
 
 
 add_library(grpc_cronet
-  src/core/lib/surface/init.c
-  src/core/lib/channel/channel_args.c
-  src/core/lib/channel/channel_stack.c
-  src/core/lib/channel/channel_stack_builder.c
-  src/core/lib/channel/connected_channel.c
-  src/core/lib/channel/handshaker.c
-  src/core/lib/channel/handshaker_factory.c
-  src/core/lib/channel/handshaker_registry.c
-  src/core/lib/compression/compression.c
-  src/core/lib/compression/message_compress.c
-  src/core/lib/compression/stream_compression.c
-  src/core/lib/compression/stream_compression_gzip.c
-  src/core/lib/compression/stream_compression_identity.c
-  src/core/lib/debug/stats.c
-  src/core/lib/debug/stats_data.c
-  src/core/lib/http/format_request.c
-  src/core/lib/http/httpcli.c
-  src/core/lib/http/parser.c
-  src/core/lib/iomgr/call_combiner.c
-  src/core/lib/iomgr/closure.c
-  src/core/lib/iomgr/combiner.c
-  src/core/lib/iomgr/endpoint.c
-  src/core/lib/iomgr/endpoint_pair_posix.c
-  src/core/lib/iomgr/endpoint_pair_uv.c
-  src/core/lib/iomgr/endpoint_pair_windows.c
-  src/core/lib/iomgr/error.c
-  src/core/lib/iomgr/ev_epoll1_linux.c
-  src/core/lib/iomgr/ev_epollex_linux.c
-  src/core/lib/iomgr/ev_epollsig_linux.c
-  src/core/lib/iomgr/ev_poll_posix.c
-  src/core/lib/iomgr/ev_posix.c
-  src/core/lib/iomgr/ev_windows.c
-  src/core/lib/iomgr/exec_ctx.c
-  src/core/lib/iomgr/executor.c
-  src/core/lib/iomgr/gethostname_fallback.c
-  src/core/lib/iomgr/gethostname_host_name_max.c
-  src/core/lib/iomgr/gethostname_sysconf.c
-  src/core/lib/iomgr/iocp_windows.c
-  src/core/lib/iomgr/iomgr.c
-  src/core/lib/iomgr/iomgr_posix.c
-  src/core/lib/iomgr/iomgr_uv.c
-  src/core/lib/iomgr/iomgr_windows.c
-  src/core/lib/iomgr/is_epollexclusive_available.c
-  src/core/lib/iomgr/load_file.c
-  src/core/lib/iomgr/lockfree_event.c
-  src/core/lib/iomgr/network_status_tracker.c
-  src/core/lib/iomgr/polling_entity.c
-  src/core/lib/iomgr/pollset_set_uv.c
-  src/core/lib/iomgr/pollset_set_windows.c
-  src/core/lib/iomgr/pollset_uv.c
-  src/core/lib/iomgr/pollset_windows.c
-  src/core/lib/iomgr/resolve_address_posix.c
-  src/core/lib/iomgr/resolve_address_uv.c
-  src/core/lib/iomgr/resolve_address_windows.c
-  src/core/lib/iomgr/resource_quota.c
-  src/core/lib/iomgr/sockaddr_utils.c
-  src/core/lib/iomgr/socket_factory_posix.c
-  src/core/lib/iomgr/socket_mutator.c
-  src/core/lib/iomgr/socket_utils_common_posix.c
-  src/core/lib/iomgr/socket_utils_linux.c
-  src/core/lib/iomgr/socket_utils_posix.c
-  src/core/lib/iomgr/socket_utils_uv.c
-  src/core/lib/iomgr/socket_utils_windows.c
-  src/core/lib/iomgr/socket_windows.c
-  src/core/lib/iomgr/tcp_client_posix.c
-  src/core/lib/iomgr/tcp_client_uv.c
-  src/core/lib/iomgr/tcp_client_windows.c
-  src/core/lib/iomgr/tcp_posix.c
-  src/core/lib/iomgr/tcp_server_posix.c
-  src/core/lib/iomgr/tcp_server_utils_posix_common.c
-  src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c
-  src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c
-  src/core/lib/iomgr/tcp_server_uv.c
-  src/core/lib/iomgr/tcp_server_windows.c
-  src/core/lib/iomgr/tcp_uv.c
-  src/core/lib/iomgr/tcp_windows.c
-  src/core/lib/iomgr/time_averaged_stats.c
-  src/core/lib/iomgr/timer_generic.c
-  src/core/lib/iomgr/timer_heap.c
-  src/core/lib/iomgr/timer_manager.c
-  src/core/lib/iomgr/timer_uv.c
-  src/core/lib/iomgr/udp_server.c
-  src/core/lib/iomgr/unix_sockets_posix.c
-  src/core/lib/iomgr/unix_sockets_posix_noop.c
-  src/core/lib/iomgr/wakeup_fd_cv.c
-  src/core/lib/iomgr/wakeup_fd_eventfd.c
-  src/core/lib/iomgr/wakeup_fd_nospecial.c
-  src/core/lib/iomgr/wakeup_fd_pipe.c
-  src/core/lib/iomgr/wakeup_fd_posix.c
-  src/core/lib/json/json.c
-  src/core/lib/json/json_reader.c
-  src/core/lib/json/json_string.c
-  src/core/lib/json/json_writer.c
-  src/core/lib/slice/b64.c
-  src/core/lib/slice/percent_encoding.c
-  src/core/lib/slice/slice.c
-  src/core/lib/slice/slice_buffer.c
-  src/core/lib/slice/slice_hash_table.c
-  src/core/lib/slice/slice_intern.c
-  src/core/lib/slice/slice_string_helpers.c
-  src/core/lib/surface/alarm.c
-  src/core/lib/surface/api_trace.c
-  src/core/lib/surface/byte_buffer.c
-  src/core/lib/surface/byte_buffer_reader.c
-  src/core/lib/surface/call.c
-  src/core/lib/surface/call_details.c
-  src/core/lib/surface/call_log_batch.c
-  src/core/lib/surface/channel.c
-  src/core/lib/surface/channel_init.c
-  src/core/lib/surface/channel_ping.c
-  src/core/lib/surface/channel_stack_type.c
-  src/core/lib/surface/completion_queue.c
-  src/core/lib/surface/completion_queue_factory.c
-  src/core/lib/surface/event_string.c
+  src/core/lib/surface/init.cc
+  src/core/lib/channel/channel_args.cc
+  src/core/lib/channel/channel_stack.cc
+  src/core/lib/channel/channel_stack_builder.cc
+  src/core/lib/channel/connected_channel.cc
+  src/core/lib/channel/handshaker.cc
+  src/core/lib/channel/handshaker_factory.cc
+  src/core/lib/channel/handshaker_registry.cc
+  src/core/lib/compression/compression.cc
+  src/core/lib/compression/message_compress.cc
+  src/core/lib/compression/stream_compression.cc
+  src/core/lib/compression/stream_compression_gzip.cc
+  src/core/lib/compression/stream_compression_identity.cc
+  src/core/lib/debug/stats.cc
+  src/core/lib/debug/stats_data.cc
+  src/core/lib/http/format_request.cc
+  src/core/lib/http/httpcli.cc
+  src/core/lib/http/parser.cc
+  src/core/lib/iomgr/call_combiner.cc
+  src/core/lib/iomgr/closure.cc
+  src/core/lib/iomgr/combiner.cc
+  src/core/lib/iomgr/endpoint.cc
+  src/core/lib/iomgr/endpoint_pair_posix.cc
+  src/core/lib/iomgr/endpoint_pair_uv.cc
+  src/core/lib/iomgr/endpoint_pair_windows.cc
+  src/core/lib/iomgr/error.cc
+  src/core/lib/iomgr/ev_epoll1_linux.cc
+  src/core/lib/iomgr/ev_epollex_linux.cc
+  src/core/lib/iomgr/ev_epollsig_linux.cc
+  src/core/lib/iomgr/ev_poll_posix.cc
+  src/core/lib/iomgr/ev_posix.cc
+  src/core/lib/iomgr/ev_windows.cc
+  src/core/lib/iomgr/exec_ctx.cc
+  src/core/lib/iomgr/executor.cc
+  src/core/lib/iomgr/gethostname_fallback.cc
+  src/core/lib/iomgr/gethostname_host_name_max.cc
+  src/core/lib/iomgr/gethostname_sysconf.cc
+  src/core/lib/iomgr/iocp_windows.cc
+  src/core/lib/iomgr/iomgr.cc
+  src/core/lib/iomgr/iomgr_posix.cc
+  src/core/lib/iomgr/iomgr_uv.cc
+  src/core/lib/iomgr/iomgr_windows.cc
+  src/core/lib/iomgr/is_epollexclusive_available.cc
+  src/core/lib/iomgr/load_file.cc
+  src/core/lib/iomgr/lockfree_event.cc
+  src/core/lib/iomgr/network_status_tracker.cc
+  src/core/lib/iomgr/polling_entity.cc
+  src/core/lib/iomgr/pollset_set_uv.cc
+  src/core/lib/iomgr/pollset_set_windows.cc
+  src/core/lib/iomgr/pollset_uv.cc
+  src/core/lib/iomgr/pollset_windows.cc
+  src/core/lib/iomgr/resolve_address_posix.cc
+  src/core/lib/iomgr/resolve_address_uv.cc
+  src/core/lib/iomgr/resolve_address_windows.cc
+  src/core/lib/iomgr/resource_quota.cc
+  src/core/lib/iomgr/sockaddr_utils.cc
+  src/core/lib/iomgr/socket_factory_posix.cc
+  src/core/lib/iomgr/socket_mutator.cc
+  src/core/lib/iomgr/socket_utils_common_posix.cc
+  src/core/lib/iomgr/socket_utils_linux.cc
+  src/core/lib/iomgr/socket_utils_posix.cc
+  src/core/lib/iomgr/socket_utils_uv.cc
+  src/core/lib/iomgr/socket_utils_windows.cc
+  src/core/lib/iomgr/socket_windows.cc
+  src/core/lib/iomgr/tcp_client_posix.cc
+  src/core/lib/iomgr/tcp_client_uv.cc
+  src/core/lib/iomgr/tcp_client_windows.cc
+  src/core/lib/iomgr/tcp_posix.cc
+  src/core/lib/iomgr/tcp_server_posix.cc
+  src/core/lib/iomgr/tcp_server_utils_posix_common.cc
+  src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc
+  src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc
+  src/core/lib/iomgr/tcp_server_uv.cc
+  src/core/lib/iomgr/tcp_server_windows.cc
+  src/core/lib/iomgr/tcp_uv.cc
+  src/core/lib/iomgr/tcp_windows.cc
+  src/core/lib/iomgr/time_averaged_stats.cc
+  src/core/lib/iomgr/timer_generic.cc
+  src/core/lib/iomgr/timer_heap.cc
+  src/core/lib/iomgr/timer_manager.cc
+  src/core/lib/iomgr/timer_uv.cc
+  src/core/lib/iomgr/udp_server.cc
+  src/core/lib/iomgr/unix_sockets_posix.cc
+  src/core/lib/iomgr/unix_sockets_posix_noop.cc
+  src/core/lib/iomgr/wakeup_fd_cv.cc
+  src/core/lib/iomgr/wakeup_fd_eventfd.cc
+  src/core/lib/iomgr/wakeup_fd_nospecial.cc
+  src/core/lib/iomgr/wakeup_fd_pipe.cc
+  src/core/lib/iomgr/wakeup_fd_posix.cc
+  src/core/lib/json/json.cc
+  src/core/lib/json/json_reader.cc
+  src/core/lib/json/json_string.cc
+  src/core/lib/json/json_writer.cc
+  src/core/lib/slice/b64.cc
+  src/core/lib/slice/percent_encoding.cc
+  src/core/lib/slice/slice.cc
+  src/core/lib/slice/slice_buffer.cc
+  src/core/lib/slice/slice_hash_table.cc
+  src/core/lib/slice/slice_intern.cc
+  src/core/lib/slice/slice_string_helpers.cc
+  src/core/lib/surface/alarm.cc
+  src/core/lib/surface/api_trace.cc
+  src/core/lib/surface/byte_buffer.cc
+  src/core/lib/surface/byte_buffer_reader.cc
+  src/core/lib/surface/call.cc
+  src/core/lib/surface/call_details.cc
+  src/core/lib/surface/call_log_batch.cc
+  src/core/lib/surface/channel.cc
+  src/core/lib/surface/channel_init.cc
+  src/core/lib/surface/channel_ping.cc
+  src/core/lib/surface/channel_stack_type.cc
+  src/core/lib/surface/completion_queue.cc
+  src/core/lib/surface/completion_queue_factory.cc
+  src/core/lib/surface/event_string.cc
   src/core/lib/surface/lame_client.cc
-  src/core/lib/surface/metadata_array.c
-  src/core/lib/surface/server.c
-  src/core/lib/surface/validate_metadata.c
-  src/core/lib/surface/version.c
-  src/core/lib/transport/bdp_estimator.c
-  src/core/lib/transport/byte_stream.c
-  src/core/lib/transport/connectivity_state.c
-  src/core/lib/transport/error_utils.c
-  src/core/lib/transport/metadata.c
-  src/core/lib/transport/metadata_batch.c
-  src/core/lib/transport/pid_controller.c
-  src/core/lib/transport/service_config.c
-  src/core/lib/transport/static_metadata.c
-  src/core/lib/transport/status_conversion.c
-  src/core/lib/transport/timeout_encoding.c
-  src/core/lib/transport/transport.c
-  src/core/lib/transport/transport_op_string.c
-  src/core/lib/debug/trace.c
-  src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
-  src/core/ext/transport/cronet/transport/cronet_api_dummy.c
-  src/core/ext/transport/cronet/transport/cronet_transport.c
-  src/core/ext/transport/chttp2/client/secure/secure_channel_create.c
-  src/core/ext/transport/chttp2/transport/bin_decoder.c
-  src/core/ext/transport/chttp2/transport/bin_encoder.c
-  src/core/ext/transport/chttp2/transport/chttp2_plugin.c
-  src/core/ext/transport/chttp2/transport/chttp2_transport.c
-  src/core/ext/transport/chttp2/transport/flow_control.c
-  src/core/ext/transport/chttp2/transport/frame_data.c
-  src/core/ext/transport/chttp2/transport/frame_goaway.c
-  src/core/ext/transport/chttp2/transport/frame_ping.c
-  src/core/ext/transport/chttp2/transport/frame_rst_stream.c
-  src/core/ext/transport/chttp2/transport/frame_settings.c
-  src/core/ext/transport/chttp2/transport/frame_window_update.c
-  src/core/ext/transport/chttp2/transport/hpack_encoder.c
-  src/core/ext/transport/chttp2/transport/hpack_parser.c
-  src/core/ext/transport/chttp2/transport/hpack_table.c
-  src/core/ext/transport/chttp2/transport/http2_settings.c
-  src/core/ext/transport/chttp2/transport/huffsyms.c
-  src/core/ext/transport/chttp2/transport/incoming_metadata.c
-  src/core/ext/transport/chttp2/transport/parsing.c
-  src/core/ext/transport/chttp2/transport/stream_lists.c
-  src/core/ext/transport/chttp2/transport/stream_map.c
-  src/core/ext/transport/chttp2/transport/varint.c
-  src/core/ext/transport/chttp2/transport/writing.c
-  src/core/ext/transport/chttp2/alpn/alpn.c
-  src/core/ext/filters/http/client/http_client_filter.c
-  src/core/ext/filters/http/http_filters_plugin.c
-  src/core/ext/filters/http/message_compress/message_compress_filter.c
-  src/core/ext/filters/http/server/http_server_filter.c
-  src/core/ext/filters/client_channel/channel_connectivity.c
-  src/core/ext/filters/client_channel/client_channel.c
-  src/core/ext/filters/client_channel/client_channel_factory.c
-  src/core/ext/filters/client_channel/client_channel_plugin.c
-  src/core/ext/filters/client_channel/connector.c
-  src/core/ext/filters/client_channel/http_connect_handshaker.c
-  src/core/ext/filters/client_channel/http_proxy.c
-  src/core/ext/filters/client_channel/lb_policy.c
-  src/core/ext/filters/client_channel/lb_policy_factory.c
-  src/core/ext/filters/client_channel/lb_policy_registry.c
-  src/core/ext/filters/client_channel/parse_address.c
-  src/core/ext/filters/client_channel/proxy_mapper.c
-  src/core/ext/filters/client_channel/proxy_mapper_registry.c
-  src/core/ext/filters/client_channel/resolver.c
-  src/core/ext/filters/client_channel/resolver_factory.c
-  src/core/ext/filters/client_channel/resolver_registry.c
-  src/core/ext/filters/client_channel/retry_throttle.c
-  src/core/ext/filters/client_channel/subchannel.c
-  src/core/ext/filters/client_channel/subchannel_index.c
-  src/core/ext/filters/client_channel/uri_parser.c
-  src/core/ext/filters/deadline/deadline_filter.c
-  src/core/lib/http/httpcli_security_connector.c
-  src/core/lib/security/context/security_context.c
-  src/core/lib/security/credentials/composite/composite_credentials.c
-  src/core/lib/security/credentials/credentials.c
-  src/core/lib/security/credentials/credentials_metadata.c
-  src/core/lib/security/credentials/fake/fake_credentials.c
-  src/core/lib/security/credentials/google_default/credentials_generic.c
-  src/core/lib/security/credentials/google_default/google_default_credentials.c
-  src/core/lib/security/credentials/iam/iam_credentials.c
-  src/core/lib/security/credentials/jwt/json_token.c
-  src/core/lib/security/credentials/jwt/jwt_credentials.c
-  src/core/lib/security/credentials/jwt/jwt_verifier.c
-  src/core/lib/security/credentials/oauth2/oauth2_credentials.c
-  src/core/lib/security/credentials/plugin/plugin_credentials.c
-  src/core/lib/security/credentials/ssl/ssl_credentials.c
-  src/core/lib/security/transport/client_auth_filter.c
-  src/core/lib/security/transport/lb_targets_info.c
-  src/core/lib/security/transport/secure_endpoint.c
-  src/core/lib/security/transport/security_connector.c
-  src/core/lib/security/transport/security_handshaker.c
-  src/core/lib/security/transport/server_auth_filter.c
-  src/core/lib/security/transport/tsi_error.c
-  src/core/lib/security/util/json_util.c
-  src/core/lib/surface/init_secure.c
-  src/core/tsi/fake_transport_security.c
-  src/core/tsi/gts_transport_security.c
-  src/core/tsi/ssl_transport_security.c
-  src/core/tsi/transport_security_grpc.c
-  src/core/tsi/transport_security.c
-  src/core/tsi/transport_security_adapter.c
-  src/core/ext/transport/chttp2/client/chttp2_connector.c
-  src/core/ext/filters/load_reporting/server_load_reporting_filter.c
-  src/core/ext/filters/load_reporting/server_load_reporting_plugin.c
-  src/core/plugin_registry/grpc_cronet_plugin_registry.c
+  src/core/lib/surface/metadata_array.cc
+  src/core/lib/surface/server.cc
+  src/core/lib/surface/validate_metadata.cc
+  src/core/lib/surface/version.cc
+  src/core/lib/transport/bdp_estimator.cc
+  src/core/lib/transport/byte_stream.cc
+  src/core/lib/transport/connectivity_state.cc
+  src/core/lib/transport/error_utils.cc
+  src/core/lib/transport/metadata.cc
+  src/core/lib/transport/metadata_batch.cc
+  src/core/lib/transport/pid_controller.cc
+  src/core/lib/transport/service_config.cc
+  src/core/lib/transport/static_metadata.cc
+  src/core/lib/transport/status_conversion.cc
+  src/core/lib/transport/timeout_encoding.cc
+  src/core/lib/transport/transport.cc
+  src/core/lib/transport/transport_op_string.cc
+  src/core/lib/debug/trace.cc
+  src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc
+  src/core/ext/transport/cronet/transport/cronet_api_dummy.cc
+  src/core/ext/transport/cronet/transport/cronet_transport.cc
+  src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc
+  src/core/ext/transport/chttp2/transport/bin_decoder.cc
+  src/core/ext/transport/chttp2/transport/bin_encoder.cc
+  src/core/ext/transport/chttp2/transport/chttp2_plugin.cc
+  src/core/ext/transport/chttp2/transport/chttp2_transport.cc
+  src/core/ext/transport/chttp2/transport/flow_control.cc
+  src/core/ext/transport/chttp2/transport/frame_data.cc
+  src/core/ext/transport/chttp2/transport/frame_goaway.cc
+  src/core/ext/transport/chttp2/transport/frame_ping.cc
+  src/core/ext/transport/chttp2/transport/frame_rst_stream.cc
+  src/core/ext/transport/chttp2/transport/frame_settings.cc
+  src/core/ext/transport/chttp2/transport/frame_window_update.cc
+  src/core/ext/transport/chttp2/transport/hpack_encoder.cc
+  src/core/ext/transport/chttp2/transport/hpack_parser.cc
+  src/core/ext/transport/chttp2/transport/hpack_table.cc
+  src/core/ext/transport/chttp2/transport/http2_settings.cc
+  src/core/ext/transport/chttp2/transport/huffsyms.cc
+  src/core/ext/transport/chttp2/transport/incoming_metadata.cc
+  src/core/ext/transport/chttp2/transport/parsing.cc
+  src/core/ext/transport/chttp2/transport/stream_lists.cc
+  src/core/ext/transport/chttp2/transport/stream_map.cc
+  src/core/ext/transport/chttp2/transport/varint.cc
+  src/core/ext/transport/chttp2/transport/writing.cc
+  src/core/ext/transport/chttp2/alpn/alpn.cc
+  src/core/ext/filters/http/client/http_client_filter.cc
+  src/core/ext/filters/http/http_filters_plugin.cc
+  src/core/ext/filters/http/message_compress/message_compress_filter.cc
+  src/core/ext/filters/http/server/http_server_filter.cc
+  src/core/ext/filters/client_channel/channel_connectivity.cc
+  src/core/ext/filters/client_channel/client_channel.cc
+  src/core/ext/filters/client_channel/client_channel_factory.cc
+  src/core/ext/filters/client_channel/client_channel_plugin.cc
+  src/core/ext/filters/client_channel/connector.cc
+  src/core/ext/filters/client_channel/http_connect_handshaker.cc
+  src/core/ext/filters/client_channel/http_proxy.cc
+  src/core/ext/filters/client_channel/lb_policy.cc
+  src/core/ext/filters/client_channel/lb_policy_factory.cc
+  src/core/ext/filters/client_channel/lb_policy_registry.cc
+  src/core/ext/filters/client_channel/parse_address.cc
+  src/core/ext/filters/client_channel/proxy_mapper.cc
+  src/core/ext/filters/client_channel/proxy_mapper_registry.cc
+  src/core/ext/filters/client_channel/resolver.cc
+  src/core/ext/filters/client_channel/resolver_factory.cc
+  src/core/ext/filters/client_channel/resolver_registry.cc
+  src/core/ext/filters/client_channel/retry_throttle.cc
+  src/core/ext/filters/client_channel/subchannel.cc
+  src/core/ext/filters/client_channel/subchannel_index.cc
+  src/core/ext/filters/client_channel/uri_parser.cc
+  src/core/ext/filters/deadline/deadline_filter.cc
+  src/core/lib/http/httpcli_security_connector.cc
+  src/core/lib/security/context/security_context.cc
+  src/core/lib/security/credentials/composite/composite_credentials.cc
+  src/core/lib/security/credentials/credentials.cc
+  src/core/lib/security/credentials/credentials_metadata.cc
+  src/core/lib/security/credentials/fake/fake_credentials.cc
+  src/core/lib/security/credentials/google_default/credentials_generic.cc
+  src/core/lib/security/credentials/google_default/google_default_credentials.cc
+  src/core/lib/security/credentials/iam/iam_credentials.cc
+  src/core/lib/security/credentials/jwt/json_token.cc
+  src/core/lib/security/credentials/jwt/jwt_credentials.cc
+  src/core/lib/security/credentials/jwt/jwt_verifier.cc
+  src/core/lib/security/credentials/oauth2/oauth2_credentials.cc
+  src/core/lib/security/credentials/plugin/plugin_credentials.cc
+  src/core/lib/security/credentials/ssl/ssl_credentials.cc
+  src/core/lib/security/transport/client_auth_filter.cc
+  src/core/lib/security/transport/lb_targets_info.cc
+  src/core/lib/security/transport/secure_endpoint.cc
+  src/core/lib/security/transport/security_connector.cc
+  src/core/lib/security/transport/security_handshaker.cc
+  src/core/lib/security/transport/server_auth_filter.cc
+  src/core/lib/security/transport/tsi_error.cc
+  src/core/lib/security/util/json_util.cc
+  src/core/lib/surface/init_secure.cc
+  src/core/tsi/fake_transport_security.cc
+  src/core/tsi/gts_transport_security.cc
+  src/core/tsi/ssl_transport_security.cc
+  src/core/tsi/transport_security_grpc.cc
+  src/core/tsi/transport_security.cc
+  src/core/tsi/transport_security_adapter.cc
+  src/core/ext/transport/chttp2/client/chttp2_connector.cc
+  src/core/ext/filters/load_reporting/server_load_reporting_filter.cc
+  src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc
+  src/core/plugin_registry/grpc_cronet_plugin_registry.cc
 )
 
 if(WIN32 AND MSVC)
@@ -1610,7 +1610,7 @@
   test/core/end2end/data/server1_key.c
   test/core/end2end/data/test_root_cert.c
   test/core/security/oauth2_utils.c
-  src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c
+  src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc
   test/core/end2end/cq_verifier.c
   test/core/end2end/fixtures/http_proxy_fixture.c
   test/core/end2end/fixtures/proxy.c
@@ -1625,186 +1625,186 @@
   test/core/util/port_server_client.c
   test/core/util/slice_splitter.c
   test/core/util/trickle_endpoint.c
-  src/core/lib/channel/channel_args.c
-  src/core/lib/channel/channel_stack.c
-  src/core/lib/channel/channel_stack_builder.c
-  src/core/lib/channel/connected_channel.c
-  src/core/lib/channel/handshaker.c
-  src/core/lib/channel/handshaker_factory.c
-  src/core/lib/channel/handshaker_registry.c
-  src/core/lib/compression/compression.c
-  src/core/lib/compression/message_compress.c
-  src/core/lib/compression/stream_compression.c
-  src/core/lib/compression/stream_compression_gzip.c
-  src/core/lib/compression/stream_compression_identity.c
-  src/core/lib/debug/stats.c
-  src/core/lib/debug/stats_data.c
-  src/core/lib/http/format_request.c
-  src/core/lib/http/httpcli.c
-  src/core/lib/http/parser.c
-  src/core/lib/iomgr/call_combiner.c
-  src/core/lib/iomgr/closure.c
-  src/core/lib/iomgr/combiner.c
-  src/core/lib/iomgr/endpoint.c
-  src/core/lib/iomgr/endpoint_pair_posix.c
-  src/core/lib/iomgr/endpoint_pair_uv.c
-  src/core/lib/iomgr/endpoint_pair_windows.c
-  src/core/lib/iomgr/error.c
-  src/core/lib/iomgr/ev_epoll1_linux.c
-  src/core/lib/iomgr/ev_epollex_linux.c
-  src/core/lib/iomgr/ev_epollsig_linux.c
-  src/core/lib/iomgr/ev_poll_posix.c
-  src/core/lib/iomgr/ev_posix.c
-  src/core/lib/iomgr/ev_windows.c
-  src/core/lib/iomgr/exec_ctx.c
-  src/core/lib/iomgr/executor.c
-  src/core/lib/iomgr/gethostname_fallback.c
-  src/core/lib/iomgr/gethostname_host_name_max.c
-  src/core/lib/iomgr/gethostname_sysconf.c
-  src/core/lib/iomgr/iocp_windows.c
-  src/core/lib/iomgr/iomgr.c
-  src/core/lib/iomgr/iomgr_posix.c
-  src/core/lib/iomgr/iomgr_uv.c
-  src/core/lib/iomgr/iomgr_windows.c
-  src/core/lib/iomgr/is_epollexclusive_available.c
-  src/core/lib/iomgr/load_file.c
-  src/core/lib/iomgr/lockfree_event.c
-  src/core/lib/iomgr/network_status_tracker.c
-  src/core/lib/iomgr/polling_entity.c
-  src/core/lib/iomgr/pollset_set_uv.c
-  src/core/lib/iomgr/pollset_set_windows.c
-  src/core/lib/iomgr/pollset_uv.c
-  src/core/lib/iomgr/pollset_windows.c
-  src/core/lib/iomgr/resolve_address_posix.c
-  src/core/lib/iomgr/resolve_address_uv.c
-  src/core/lib/iomgr/resolve_address_windows.c
-  src/core/lib/iomgr/resource_quota.c
-  src/core/lib/iomgr/sockaddr_utils.c
-  src/core/lib/iomgr/socket_factory_posix.c
-  src/core/lib/iomgr/socket_mutator.c
-  src/core/lib/iomgr/socket_utils_common_posix.c
-  src/core/lib/iomgr/socket_utils_linux.c
-  src/core/lib/iomgr/socket_utils_posix.c
-  src/core/lib/iomgr/socket_utils_uv.c
-  src/core/lib/iomgr/socket_utils_windows.c
-  src/core/lib/iomgr/socket_windows.c
-  src/core/lib/iomgr/tcp_client_posix.c
-  src/core/lib/iomgr/tcp_client_uv.c
-  src/core/lib/iomgr/tcp_client_windows.c
-  src/core/lib/iomgr/tcp_posix.c
-  src/core/lib/iomgr/tcp_server_posix.c
-  src/core/lib/iomgr/tcp_server_utils_posix_common.c
-  src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c
-  src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c
-  src/core/lib/iomgr/tcp_server_uv.c
-  src/core/lib/iomgr/tcp_server_windows.c
-  src/core/lib/iomgr/tcp_uv.c
-  src/core/lib/iomgr/tcp_windows.c
-  src/core/lib/iomgr/time_averaged_stats.c
-  src/core/lib/iomgr/timer_generic.c
-  src/core/lib/iomgr/timer_heap.c
-  src/core/lib/iomgr/timer_manager.c
-  src/core/lib/iomgr/timer_uv.c
-  src/core/lib/iomgr/udp_server.c
-  src/core/lib/iomgr/unix_sockets_posix.c
-  src/core/lib/iomgr/unix_sockets_posix_noop.c
-  src/core/lib/iomgr/wakeup_fd_cv.c
-  src/core/lib/iomgr/wakeup_fd_eventfd.c
-  src/core/lib/iomgr/wakeup_fd_nospecial.c
-  src/core/lib/iomgr/wakeup_fd_pipe.c
-  src/core/lib/iomgr/wakeup_fd_posix.c
-  src/core/lib/json/json.c
-  src/core/lib/json/json_reader.c
-  src/core/lib/json/json_string.c
-  src/core/lib/json/json_writer.c
-  src/core/lib/slice/b64.c
-  src/core/lib/slice/percent_encoding.c
-  src/core/lib/slice/slice.c
-  src/core/lib/slice/slice_buffer.c
-  src/core/lib/slice/slice_hash_table.c
-  src/core/lib/slice/slice_intern.c
-  src/core/lib/slice/slice_string_helpers.c
-  src/core/lib/surface/alarm.c
-  src/core/lib/surface/api_trace.c
-  src/core/lib/surface/byte_buffer.c
-  src/core/lib/surface/byte_buffer_reader.c
-  src/core/lib/surface/call.c
-  src/core/lib/surface/call_details.c
-  src/core/lib/surface/call_log_batch.c
-  src/core/lib/surface/channel.c
-  src/core/lib/surface/channel_init.c
-  src/core/lib/surface/channel_ping.c
-  src/core/lib/surface/channel_stack_type.c
-  src/core/lib/surface/completion_queue.c
-  src/core/lib/surface/completion_queue_factory.c
-  src/core/lib/surface/event_string.c
+  src/core/lib/channel/channel_args.cc
+  src/core/lib/channel/channel_stack.cc
+  src/core/lib/channel/channel_stack_builder.cc
+  src/core/lib/channel/connected_channel.cc
+  src/core/lib/channel/handshaker.cc
+  src/core/lib/channel/handshaker_factory.cc
+  src/core/lib/channel/handshaker_registry.cc
+  src/core/lib/compression/compression.cc
+  src/core/lib/compression/message_compress.cc
+  src/core/lib/compression/stream_compression.cc
+  src/core/lib/compression/stream_compression_gzip.cc
+  src/core/lib/compression/stream_compression_identity.cc
+  src/core/lib/debug/stats.cc
+  src/core/lib/debug/stats_data.cc
+  src/core/lib/http/format_request.cc
+  src/core/lib/http/httpcli.cc
+  src/core/lib/http/parser.cc
+  src/core/lib/iomgr/call_combiner.cc
+  src/core/lib/iomgr/closure.cc
+  src/core/lib/iomgr/combiner.cc
+  src/core/lib/iomgr/endpoint.cc
+  src/core/lib/iomgr/endpoint_pair_posix.cc
+  src/core/lib/iomgr/endpoint_pair_uv.cc
+  src/core/lib/iomgr/endpoint_pair_windows.cc
+  src/core/lib/iomgr/error.cc
+  src/core/lib/iomgr/ev_epoll1_linux.cc
+  src/core/lib/iomgr/ev_epollex_linux.cc
+  src/core/lib/iomgr/ev_epollsig_linux.cc
+  src/core/lib/iomgr/ev_poll_posix.cc
+  src/core/lib/iomgr/ev_posix.cc
+  src/core/lib/iomgr/ev_windows.cc
+  src/core/lib/iomgr/exec_ctx.cc
+  src/core/lib/iomgr/executor.cc
+  src/core/lib/iomgr/gethostname_fallback.cc
+  src/core/lib/iomgr/gethostname_host_name_max.cc
+  src/core/lib/iomgr/gethostname_sysconf.cc
+  src/core/lib/iomgr/iocp_windows.cc
+  src/core/lib/iomgr/iomgr.cc
+  src/core/lib/iomgr/iomgr_posix.cc
+  src/core/lib/iomgr/iomgr_uv.cc
+  src/core/lib/iomgr/iomgr_windows.cc
+  src/core/lib/iomgr/is_epollexclusive_available.cc
+  src/core/lib/iomgr/load_file.cc
+  src/core/lib/iomgr/lockfree_event.cc
+  src/core/lib/iomgr/network_status_tracker.cc
+  src/core/lib/iomgr/polling_entity.cc
+  src/core/lib/iomgr/pollset_set_uv.cc
+  src/core/lib/iomgr/pollset_set_windows.cc
+  src/core/lib/iomgr/pollset_uv.cc
+  src/core/lib/iomgr/pollset_windows.cc
+  src/core/lib/iomgr/resolve_address_posix.cc
+  src/core/lib/iomgr/resolve_address_uv.cc
+  src/core/lib/iomgr/resolve_address_windows.cc
+  src/core/lib/iomgr/resource_quota.cc
+  src/core/lib/iomgr/sockaddr_utils.cc
+  src/core/lib/iomgr/socket_factory_posix.cc
+  src/core/lib/iomgr/socket_mutator.cc
+  src/core/lib/iomgr/socket_utils_common_posix.cc
+  src/core/lib/iomgr/socket_utils_linux.cc
+  src/core/lib/iomgr/socket_utils_posix.cc
+  src/core/lib/iomgr/socket_utils_uv.cc
+  src/core/lib/iomgr/socket_utils_windows.cc
+  src/core/lib/iomgr/socket_windows.cc
+  src/core/lib/iomgr/tcp_client_posix.cc
+  src/core/lib/iomgr/tcp_client_uv.cc
+  src/core/lib/iomgr/tcp_client_windows.cc
+  src/core/lib/iomgr/tcp_posix.cc
+  src/core/lib/iomgr/tcp_server_posix.cc
+  src/core/lib/iomgr/tcp_server_utils_posix_common.cc
+  src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc
+  src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc
+  src/core/lib/iomgr/tcp_server_uv.cc
+  src/core/lib/iomgr/tcp_server_windows.cc
+  src/core/lib/iomgr/tcp_uv.cc
+  src/core/lib/iomgr/tcp_windows.cc
+  src/core/lib/iomgr/time_averaged_stats.cc
+  src/core/lib/iomgr/timer_generic.cc
+  src/core/lib/iomgr/timer_heap.cc
+  src/core/lib/iomgr/timer_manager.cc
+  src/core/lib/iomgr/timer_uv.cc
+  src/core/lib/iomgr/udp_server.cc
+  src/core/lib/iomgr/unix_sockets_posix.cc
+  src/core/lib/iomgr/unix_sockets_posix_noop.cc
+  src/core/lib/iomgr/wakeup_fd_cv.cc
+  src/core/lib/iomgr/wakeup_fd_eventfd.cc
+  src/core/lib/iomgr/wakeup_fd_nospecial.cc
+  src/core/lib/iomgr/wakeup_fd_pipe.cc
+  src/core/lib/iomgr/wakeup_fd_posix.cc
+  src/core/lib/json/json.cc
+  src/core/lib/json/json_reader.cc
+  src/core/lib/json/json_string.cc
+  src/core/lib/json/json_writer.cc
+  src/core/lib/slice/b64.cc
+  src/core/lib/slice/percent_encoding.cc
+  src/core/lib/slice/slice.cc
+  src/core/lib/slice/slice_buffer.cc
+  src/core/lib/slice/slice_hash_table.cc
+  src/core/lib/slice/slice_intern.cc
+  src/core/lib/slice/slice_string_helpers.cc
+  src/core/lib/surface/alarm.cc
+  src/core/lib/surface/api_trace.cc
+  src/core/lib/surface/byte_buffer.cc
+  src/core/lib/surface/byte_buffer_reader.cc
+  src/core/lib/surface/call.cc
+  src/core/lib/surface/call_details.cc
+  src/core/lib/surface/call_log_batch.cc
+  src/core/lib/surface/channel.cc
+  src/core/lib/surface/channel_init.cc
+  src/core/lib/surface/channel_ping.cc
+  src/core/lib/surface/channel_stack_type.cc
+  src/core/lib/surface/completion_queue.cc
+  src/core/lib/surface/completion_queue_factory.cc
+  src/core/lib/surface/event_string.cc
   src/core/lib/surface/lame_client.cc
-  src/core/lib/surface/metadata_array.c
-  src/core/lib/surface/server.c
-  src/core/lib/surface/validate_metadata.c
-  src/core/lib/surface/version.c
-  src/core/lib/transport/bdp_estimator.c
-  src/core/lib/transport/byte_stream.c
-  src/core/lib/transport/connectivity_state.c
-  src/core/lib/transport/error_utils.c
-  src/core/lib/transport/metadata.c
-  src/core/lib/transport/metadata_batch.c
-  src/core/lib/transport/pid_controller.c
-  src/core/lib/transport/service_config.c
-  src/core/lib/transport/static_metadata.c
-  src/core/lib/transport/status_conversion.c
-  src/core/lib/transport/timeout_encoding.c
-  src/core/lib/transport/transport.c
-  src/core/lib/transport/transport_op_string.c
-  src/core/lib/debug/trace.c
-  src/core/ext/filters/client_channel/channel_connectivity.c
-  src/core/ext/filters/client_channel/client_channel.c
-  src/core/ext/filters/client_channel/client_channel_factory.c
-  src/core/ext/filters/client_channel/client_channel_plugin.c
-  src/core/ext/filters/client_channel/connector.c
-  src/core/ext/filters/client_channel/http_connect_handshaker.c
-  src/core/ext/filters/client_channel/http_proxy.c
-  src/core/ext/filters/client_channel/lb_policy.c
-  src/core/ext/filters/client_channel/lb_policy_factory.c
-  src/core/ext/filters/client_channel/lb_policy_registry.c
-  src/core/ext/filters/client_channel/parse_address.c
-  src/core/ext/filters/client_channel/proxy_mapper.c
-  src/core/ext/filters/client_channel/proxy_mapper_registry.c
-  src/core/ext/filters/client_channel/resolver.c
-  src/core/ext/filters/client_channel/resolver_factory.c
-  src/core/ext/filters/client_channel/resolver_registry.c
-  src/core/ext/filters/client_channel/retry_throttle.c
-  src/core/ext/filters/client_channel/subchannel.c
-  src/core/ext/filters/client_channel/subchannel_index.c
-  src/core/ext/filters/client_channel/uri_parser.c
-  src/core/ext/filters/deadline/deadline_filter.c
-  src/core/ext/transport/chttp2/transport/bin_decoder.c
-  src/core/ext/transport/chttp2/transport/bin_encoder.c
-  src/core/ext/transport/chttp2/transport/chttp2_plugin.c
-  src/core/ext/transport/chttp2/transport/chttp2_transport.c
-  src/core/ext/transport/chttp2/transport/flow_control.c
-  src/core/ext/transport/chttp2/transport/frame_data.c
-  src/core/ext/transport/chttp2/transport/frame_goaway.c
-  src/core/ext/transport/chttp2/transport/frame_ping.c
-  src/core/ext/transport/chttp2/transport/frame_rst_stream.c
-  src/core/ext/transport/chttp2/transport/frame_settings.c
-  src/core/ext/transport/chttp2/transport/frame_window_update.c
-  src/core/ext/transport/chttp2/transport/hpack_encoder.c
-  src/core/ext/transport/chttp2/transport/hpack_parser.c
-  src/core/ext/transport/chttp2/transport/hpack_table.c
-  src/core/ext/transport/chttp2/transport/http2_settings.c
-  src/core/ext/transport/chttp2/transport/huffsyms.c
-  src/core/ext/transport/chttp2/transport/incoming_metadata.c
-  src/core/ext/transport/chttp2/transport/parsing.c
-  src/core/ext/transport/chttp2/transport/stream_lists.c
-  src/core/ext/transport/chttp2/transport/stream_map.c
-  src/core/ext/transport/chttp2/transport/varint.c
-  src/core/ext/transport/chttp2/transport/writing.c
-  src/core/ext/transport/chttp2/alpn/alpn.c
-  src/core/ext/filters/http/client/http_client_filter.c
-  src/core/ext/filters/http/http_filters_plugin.c
-  src/core/ext/filters/http/message_compress/message_compress_filter.c
-  src/core/ext/filters/http/server/http_server_filter.c
+  src/core/lib/surface/metadata_array.cc
+  src/core/lib/surface/server.cc
+  src/core/lib/surface/validate_metadata.cc
+  src/core/lib/surface/version.cc
+  src/core/lib/transport/bdp_estimator.cc
+  src/core/lib/transport/byte_stream.cc
+  src/core/lib/transport/connectivity_state.cc
+  src/core/lib/transport/error_utils.cc
+  src/core/lib/transport/metadata.cc
+  src/core/lib/transport/metadata_batch.cc
+  src/core/lib/transport/pid_controller.cc
+  src/core/lib/transport/service_config.cc
+  src/core/lib/transport/static_metadata.cc
+  src/core/lib/transport/status_conversion.cc
+  src/core/lib/transport/timeout_encoding.cc
+  src/core/lib/transport/transport.cc
+  src/core/lib/transport/transport_op_string.cc
+  src/core/lib/debug/trace.cc
+  src/core/ext/filters/client_channel/channel_connectivity.cc
+  src/core/ext/filters/client_channel/client_channel.cc
+  src/core/ext/filters/client_channel/client_channel_factory.cc
+  src/core/ext/filters/client_channel/client_channel_plugin.cc
+  src/core/ext/filters/client_channel/connector.cc
+  src/core/ext/filters/client_channel/http_connect_handshaker.cc
+  src/core/ext/filters/client_channel/http_proxy.cc
+  src/core/ext/filters/client_channel/lb_policy.cc
+  src/core/ext/filters/client_channel/lb_policy_factory.cc
+  src/core/ext/filters/client_channel/lb_policy_registry.cc
+  src/core/ext/filters/client_channel/parse_address.cc
+  src/core/ext/filters/client_channel/proxy_mapper.cc
+  src/core/ext/filters/client_channel/proxy_mapper_registry.cc
+  src/core/ext/filters/client_channel/resolver.cc
+  src/core/ext/filters/client_channel/resolver_factory.cc
+  src/core/ext/filters/client_channel/resolver_registry.cc
+  src/core/ext/filters/client_channel/retry_throttle.cc
+  src/core/ext/filters/client_channel/subchannel.cc
+  src/core/ext/filters/client_channel/subchannel_index.cc
+  src/core/ext/filters/client_channel/uri_parser.cc
+  src/core/ext/filters/deadline/deadline_filter.cc
+  src/core/ext/transport/chttp2/transport/bin_decoder.cc
+  src/core/ext/transport/chttp2/transport/bin_encoder.cc
+  src/core/ext/transport/chttp2/transport/chttp2_plugin.cc
+  src/core/ext/transport/chttp2/transport/chttp2_transport.cc
+  src/core/ext/transport/chttp2/transport/flow_control.cc
+  src/core/ext/transport/chttp2/transport/frame_data.cc
+  src/core/ext/transport/chttp2/transport/frame_goaway.cc
+  src/core/ext/transport/chttp2/transport/frame_ping.cc
+  src/core/ext/transport/chttp2/transport/frame_rst_stream.cc
+  src/core/ext/transport/chttp2/transport/frame_settings.cc
+  src/core/ext/transport/chttp2/transport/frame_window_update.cc
+  src/core/ext/transport/chttp2/transport/hpack_encoder.cc
+  src/core/ext/transport/chttp2/transport/hpack_parser.cc
+  src/core/ext/transport/chttp2/transport/hpack_table.cc
+  src/core/ext/transport/chttp2/transport/http2_settings.cc
+  src/core/ext/transport/chttp2/transport/huffsyms.cc
+  src/core/ext/transport/chttp2/transport/incoming_metadata.cc
+  src/core/ext/transport/chttp2/transport/parsing.cc
+  src/core/ext/transport/chttp2/transport/stream_lists.cc
+  src/core/ext/transport/chttp2/transport/stream_map.cc
+  src/core/ext/transport/chttp2/transport/varint.cc
+  src/core/ext/transport/chttp2/transport/writing.cc
+  src/core/ext/transport/chttp2/alpn/alpn.cc
+  src/core/ext/filters/http/client/http_client_filter.cc
+  src/core/ext/filters/http/http_filters_plugin.cc
+  src/core/ext/filters/http/message_compress/message_compress_filter.cc
+  src/core/ext/filters/http/server/http_server_filter.cc
 )
 
 if(WIN32 AND MSVC)
@@ -1873,7 +1873,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_library(grpc_test_util_unsecure
-  src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c
+  src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc
   test/core/end2end/cq_verifier.c
   test/core/end2end/fixtures/http_proxy_fixture.c
   test/core/end2end/fixtures/proxy.c
@@ -1888,186 +1888,186 @@
   test/core/util/port_server_client.c
   test/core/util/slice_splitter.c
   test/core/util/trickle_endpoint.c
-  src/core/lib/channel/channel_args.c
-  src/core/lib/channel/channel_stack.c
-  src/core/lib/channel/channel_stack_builder.c
-  src/core/lib/channel/connected_channel.c
-  src/core/lib/channel/handshaker.c
-  src/core/lib/channel/handshaker_factory.c
-  src/core/lib/channel/handshaker_registry.c
-  src/core/lib/compression/compression.c
-  src/core/lib/compression/message_compress.c
-  src/core/lib/compression/stream_compression.c
-  src/core/lib/compression/stream_compression_gzip.c
-  src/core/lib/compression/stream_compression_identity.c
-  src/core/lib/debug/stats.c
-  src/core/lib/debug/stats_data.c
-  src/core/lib/http/format_request.c
-  src/core/lib/http/httpcli.c
-  src/core/lib/http/parser.c
-  src/core/lib/iomgr/call_combiner.c
-  src/core/lib/iomgr/closure.c
-  src/core/lib/iomgr/combiner.c
-  src/core/lib/iomgr/endpoint.c
-  src/core/lib/iomgr/endpoint_pair_posix.c
-  src/core/lib/iomgr/endpoint_pair_uv.c
-  src/core/lib/iomgr/endpoint_pair_windows.c
-  src/core/lib/iomgr/error.c
-  src/core/lib/iomgr/ev_epoll1_linux.c
-  src/core/lib/iomgr/ev_epollex_linux.c
-  src/core/lib/iomgr/ev_epollsig_linux.c
-  src/core/lib/iomgr/ev_poll_posix.c
-  src/core/lib/iomgr/ev_posix.c
-  src/core/lib/iomgr/ev_windows.c
-  src/core/lib/iomgr/exec_ctx.c
-  src/core/lib/iomgr/executor.c
-  src/core/lib/iomgr/gethostname_fallback.c
-  src/core/lib/iomgr/gethostname_host_name_max.c
-  src/core/lib/iomgr/gethostname_sysconf.c
-  src/core/lib/iomgr/iocp_windows.c
-  src/core/lib/iomgr/iomgr.c
-  src/core/lib/iomgr/iomgr_posix.c
-  src/core/lib/iomgr/iomgr_uv.c
-  src/core/lib/iomgr/iomgr_windows.c
-  src/core/lib/iomgr/is_epollexclusive_available.c
-  src/core/lib/iomgr/load_file.c
-  src/core/lib/iomgr/lockfree_event.c
-  src/core/lib/iomgr/network_status_tracker.c
-  src/core/lib/iomgr/polling_entity.c
-  src/core/lib/iomgr/pollset_set_uv.c
-  src/core/lib/iomgr/pollset_set_windows.c
-  src/core/lib/iomgr/pollset_uv.c
-  src/core/lib/iomgr/pollset_windows.c
-  src/core/lib/iomgr/resolve_address_posix.c
-  src/core/lib/iomgr/resolve_address_uv.c
-  src/core/lib/iomgr/resolve_address_windows.c
-  src/core/lib/iomgr/resource_quota.c
-  src/core/lib/iomgr/sockaddr_utils.c
-  src/core/lib/iomgr/socket_factory_posix.c
-  src/core/lib/iomgr/socket_mutator.c
-  src/core/lib/iomgr/socket_utils_common_posix.c
-  src/core/lib/iomgr/socket_utils_linux.c
-  src/core/lib/iomgr/socket_utils_posix.c
-  src/core/lib/iomgr/socket_utils_uv.c
-  src/core/lib/iomgr/socket_utils_windows.c
-  src/core/lib/iomgr/socket_windows.c
-  src/core/lib/iomgr/tcp_client_posix.c
-  src/core/lib/iomgr/tcp_client_uv.c
-  src/core/lib/iomgr/tcp_client_windows.c
-  src/core/lib/iomgr/tcp_posix.c
-  src/core/lib/iomgr/tcp_server_posix.c
-  src/core/lib/iomgr/tcp_server_utils_posix_common.c
-  src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c
-  src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c
-  src/core/lib/iomgr/tcp_server_uv.c
-  src/core/lib/iomgr/tcp_server_windows.c
-  src/core/lib/iomgr/tcp_uv.c
-  src/core/lib/iomgr/tcp_windows.c
-  src/core/lib/iomgr/time_averaged_stats.c
-  src/core/lib/iomgr/timer_generic.c
-  src/core/lib/iomgr/timer_heap.c
-  src/core/lib/iomgr/timer_manager.c
-  src/core/lib/iomgr/timer_uv.c
-  src/core/lib/iomgr/udp_server.c
-  src/core/lib/iomgr/unix_sockets_posix.c
-  src/core/lib/iomgr/unix_sockets_posix_noop.c
-  src/core/lib/iomgr/wakeup_fd_cv.c
-  src/core/lib/iomgr/wakeup_fd_eventfd.c
-  src/core/lib/iomgr/wakeup_fd_nospecial.c
-  src/core/lib/iomgr/wakeup_fd_pipe.c
-  src/core/lib/iomgr/wakeup_fd_posix.c
-  src/core/lib/json/json.c
-  src/core/lib/json/json_reader.c
-  src/core/lib/json/json_string.c
-  src/core/lib/json/json_writer.c
-  src/core/lib/slice/b64.c
-  src/core/lib/slice/percent_encoding.c
-  src/core/lib/slice/slice.c
-  src/core/lib/slice/slice_buffer.c
-  src/core/lib/slice/slice_hash_table.c
-  src/core/lib/slice/slice_intern.c
-  src/core/lib/slice/slice_string_helpers.c
-  src/core/lib/surface/alarm.c
-  src/core/lib/surface/api_trace.c
-  src/core/lib/surface/byte_buffer.c
-  src/core/lib/surface/byte_buffer_reader.c
-  src/core/lib/surface/call.c
-  src/core/lib/surface/call_details.c
-  src/core/lib/surface/call_log_batch.c
-  src/core/lib/surface/channel.c
-  src/core/lib/surface/channel_init.c
-  src/core/lib/surface/channel_ping.c
-  src/core/lib/surface/channel_stack_type.c
-  src/core/lib/surface/completion_queue.c
-  src/core/lib/surface/completion_queue_factory.c
-  src/core/lib/surface/event_string.c
+  src/core/lib/channel/channel_args.cc
+  src/core/lib/channel/channel_stack.cc
+  src/core/lib/channel/channel_stack_builder.cc
+  src/core/lib/channel/connected_channel.cc
+  src/core/lib/channel/handshaker.cc
+  src/core/lib/channel/handshaker_factory.cc
+  src/core/lib/channel/handshaker_registry.cc
+  src/core/lib/compression/compression.cc
+  src/core/lib/compression/message_compress.cc
+  src/core/lib/compression/stream_compression.cc
+  src/core/lib/compression/stream_compression_gzip.cc
+  src/core/lib/compression/stream_compression_identity.cc
+  src/core/lib/debug/stats.cc
+  src/core/lib/debug/stats_data.cc
+  src/core/lib/http/format_request.cc
+  src/core/lib/http/httpcli.cc
+  src/core/lib/http/parser.cc
+  src/core/lib/iomgr/call_combiner.cc
+  src/core/lib/iomgr/closure.cc
+  src/core/lib/iomgr/combiner.cc
+  src/core/lib/iomgr/endpoint.cc
+  src/core/lib/iomgr/endpoint_pair_posix.cc
+  src/core/lib/iomgr/endpoint_pair_uv.cc
+  src/core/lib/iomgr/endpoint_pair_windows.cc
+  src/core/lib/iomgr/error.cc
+  src/core/lib/iomgr/ev_epoll1_linux.cc
+  src/core/lib/iomgr/ev_epollex_linux.cc
+  src/core/lib/iomgr/ev_epollsig_linux.cc
+  src/core/lib/iomgr/ev_poll_posix.cc
+  src/core/lib/iomgr/ev_posix.cc
+  src/core/lib/iomgr/ev_windows.cc
+  src/core/lib/iomgr/exec_ctx.cc
+  src/core/lib/iomgr/executor.cc
+  src/core/lib/iomgr/gethostname_fallback.cc
+  src/core/lib/iomgr/gethostname_host_name_max.cc
+  src/core/lib/iomgr/gethostname_sysconf.cc
+  src/core/lib/iomgr/iocp_windows.cc
+  src/core/lib/iomgr/iomgr.cc
+  src/core/lib/iomgr/iomgr_posix.cc
+  src/core/lib/iomgr/iomgr_uv.cc
+  src/core/lib/iomgr/iomgr_windows.cc
+  src/core/lib/iomgr/is_epollexclusive_available.cc
+  src/core/lib/iomgr/load_file.cc
+  src/core/lib/iomgr/lockfree_event.cc
+  src/core/lib/iomgr/network_status_tracker.cc
+  src/core/lib/iomgr/polling_entity.cc
+  src/core/lib/iomgr/pollset_set_uv.cc
+  src/core/lib/iomgr/pollset_set_windows.cc
+  src/core/lib/iomgr/pollset_uv.cc
+  src/core/lib/iomgr/pollset_windows.cc
+  src/core/lib/iomgr/resolve_address_posix.cc
+  src/core/lib/iomgr/resolve_address_uv.cc
+  src/core/lib/iomgr/resolve_address_windows.cc
+  src/core/lib/iomgr/resource_quota.cc
+  src/core/lib/iomgr/sockaddr_utils.cc
+  src/core/lib/iomgr/socket_factory_posix.cc
+  src/core/lib/iomgr/socket_mutator.cc
+  src/core/lib/iomgr/socket_utils_common_posix.cc
+  src/core/lib/iomgr/socket_utils_linux.cc
+  src/core/lib/iomgr/socket_utils_posix.cc
+  src/core/lib/iomgr/socket_utils_uv.cc
+  src/core/lib/iomgr/socket_utils_windows.cc
+  src/core/lib/iomgr/socket_windows.cc
+  src/core/lib/iomgr/tcp_client_posix.cc
+  src/core/lib/iomgr/tcp_client_uv.cc
+  src/core/lib/iomgr/tcp_client_windows.cc
+  src/core/lib/iomgr/tcp_posix.cc
+  src/core/lib/iomgr/tcp_server_posix.cc
+  src/core/lib/iomgr/tcp_server_utils_posix_common.cc
+  src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc
+  src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc
+  src/core/lib/iomgr/tcp_server_uv.cc
+  src/core/lib/iomgr/tcp_server_windows.cc
+  src/core/lib/iomgr/tcp_uv.cc
+  src/core/lib/iomgr/tcp_windows.cc
+  src/core/lib/iomgr/time_averaged_stats.cc
+  src/core/lib/iomgr/timer_generic.cc
+  src/core/lib/iomgr/timer_heap.cc
+  src/core/lib/iomgr/timer_manager.cc
+  src/core/lib/iomgr/timer_uv.cc
+  src/core/lib/iomgr/udp_server.cc
+  src/core/lib/iomgr/unix_sockets_posix.cc
+  src/core/lib/iomgr/unix_sockets_posix_noop.cc
+  src/core/lib/iomgr/wakeup_fd_cv.cc
+  src/core/lib/iomgr/wakeup_fd_eventfd.cc
+  src/core/lib/iomgr/wakeup_fd_nospecial.cc
+  src/core/lib/iomgr/wakeup_fd_pipe.cc
+  src/core/lib/iomgr/wakeup_fd_posix.cc
+  src/core/lib/json/json.cc
+  src/core/lib/json/json_reader.cc
+  src/core/lib/json/json_string.cc
+  src/core/lib/json/json_writer.cc
+  src/core/lib/slice/b64.cc
+  src/core/lib/slice/percent_encoding.cc
+  src/core/lib/slice/slice.cc
+  src/core/lib/slice/slice_buffer.cc
+  src/core/lib/slice/slice_hash_table.cc
+  src/core/lib/slice/slice_intern.cc
+  src/core/lib/slice/slice_string_helpers.cc
+  src/core/lib/surface/alarm.cc
+  src/core/lib/surface/api_trace.cc
+  src/core/lib/surface/byte_buffer.cc
+  src/core/lib/surface/byte_buffer_reader.cc
+  src/core/lib/surface/call.cc
+  src/core/lib/surface/call_details.cc
+  src/core/lib/surface/call_log_batch.cc
+  src/core/lib/surface/channel.cc
+  src/core/lib/surface/channel_init.cc
+  src/core/lib/surface/channel_ping.cc
+  src/core/lib/surface/channel_stack_type.cc
+  src/core/lib/surface/completion_queue.cc
+  src/core/lib/surface/completion_queue_factory.cc
+  src/core/lib/surface/event_string.cc
   src/core/lib/surface/lame_client.cc
-  src/core/lib/surface/metadata_array.c
-  src/core/lib/surface/server.c
-  src/core/lib/surface/validate_metadata.c
-  src/core/lib/surface/version.c
-  src/core/lib/transport/bdp_estimator.c
-  src/core/lib/transport/byte_stream.c
-  src/core/lib/transport/connectivity_state.c
-  src/core/lib/transport/error_utils.c
-  src/core/lib/transport/metadata.c
-  src/core/lib/transport/metadata_batch.c
-  src/core/lib/transport/pid_controller.c
-  src/core/lib/transport/service_config.c
-  src/core/lib/transport/static_metadata.c
-  src/core/lib/transport/status_conversion.c
-  src/core/lib/transport/timeout_encoding.c
-  src/core/lib/transport/transport.c
-  src/core/lib/transport/transport_op_string.c
-  src/core/lib/debug/trace.c
-  src/core/ext/filters/client_channel/channel_connectivity.c
-  src/core/ext/filters/client_channel/client_channel.c
-  src/core/ext/filters/client_channel/client_channel_factory.c
-  src/core/ext/filters/client_channel/client_channel_plugin.c
-  src/core/ext/filters/client_channel/connector.c
-  src/core/ext/filters/client_channel/http_connect_handshaker.c
-  src/core/ext/filters/client_channel/http_proxy.c
-  src/core/ext/filters/client_channel/lb_policy.c
-  src/core/ext/filters/client_channel/lb_policy_factory.c
-  src/core/ext/filters/client_channel/lb_policy_registry.c
-  src/core/ext/filters/client_channel/parse_address.c
-  src/core/ext/filters/client_channel/proxy_mapper.c
-  src/core/ext/filters/client_channel/proxy_mapper_registry.c
-  src/core/ext/filters/client_channel/resolver.c
-  src/core/ext/filters/client_channel/resolver_factory.c
-  src/core/ext/filters/client_channel/resolver_registry.c
-  src/core/ext/filters/client_channel/retry_throttle.c
-  src/core/ext/filters/client_channel/subchannel.c
-  src/core/ext/filters/client_channel/subchannel_index.c
-  src/core/ext/filters/client_channel/uri_parser.c
-  src/core/ext/filters/deadline/deadline_filter.c
-  src/core/ext/transport/chttp2/transport/bin_decoder.c
-  src/core/ext/transport/chttp2/transport/bin_encoder.c
-  src/core/ext/transport/chttp2/transport/chttp2_plugin.c
-  src/core/ext/transport/chttp2/transport/chttp2_transport.c
-  src/core/ext/transport/chttp2/transport/flow_control.c
-  src/core/ext/transport/chttp2/transport/frame_data.c
-  src/core/ext/transport/chttp2/transport/frame_goaway.c
-  src/core/ext/transport/chttp2/transport/frame_ping.c
-  src/core/ext/transport/chttp2/transport/frame_rst_stream.c
-  src/core/ext/transport/chttp2/transport/frame_settings.c
-  src/core/ext/transport/chttp2/transport/frame_window_update.c
-  src/core/ext/transport/chttp2/transport/hpack_encoder.c
-  src/core/ext/transport/chttp2/transport/hpack_parser.c
-  src/core/ext/transport/chttp2/transport/hpack_table.c
-  src/core/ext/transport/chttp2/transport/http2_settings.c
-  src/core/ext/transport/chttp2/transport/huffsyms.c
-  src/core/ext/transport/chttp2/transport/incoming_metadata.c
-  src/core/ext/transport/chttp2/transport/parsing.c
-  src/core/ext/transport/chttp2/transport/stream_lists.c
-  src/core/ext/transport/chttp2/transport/stream_map.c
-  src/core/ext/transport/chttp2/transport/varint.c
-  src/core/ext/transport/chttp2/transport/writing.c
-  src/core/ext/transport/chttp2/alpn/alpn.c
-  src/core/ext/filters/http/client/http_client_filter.c
-  src/core/ext/filters/http/http_filters_plugin.c
-  src/core/ext/filters/http/message_compress/message_compress_filter.c
-  src/core/ext/filters/http/server/http_server_filter.c
+  src/core/lib/surface/metadata_array.cc
+  src/core/lib/surface/server.cc
+  src/core/lib/surface/validate_metadata.cc
+  src/core/lib/surface/version.cc
+  src/core/lib/transport/bdp_estimator.cc
+  src/core/lib/transport/byte_stream.cc
+  src/core/lib/transport/connectivity_state.cc
+  src/core/lib/transport/error_utils.cc
+  src/core/lib/transport/metadata.cc
+  src/core/lib/transport/metadata_batch.cc
+  src/core/lib/transport/pid_controller.cc
+  src/core/lib/transport/service_config.cc
+  src/core/lib/transport/static_metadata.cc
+  src/core/lib/transport/status_conversion.cc
+  src/core/lib/transport/timeout_encoding.cc
+  src/core/lib/transport/transport.cc
+  src/core/lib/transport/transport_op_string.cc
+  src/core/lib/debug/trace.cc
+  src/core/ext/filters/client_channel/channel_connectivity.cc
+  src/core/ext/filters/client_channel/client_channel.cc
+  src/core/ext/filters/client_channel/client_channel_factory.cc
+  src/core/ext/filters/client_channel/client_channel_plugin.cc
+  src/core/ext/filters/client_channel/connector.cc
+  src/core/ext/filters/client_channel/http_connect_handshaker.cc
+  src/core/ext/filters/client_channel/http_proxy.cc
+  src/core/ext/filters/client_channel/lb_policy.cc
+  src/core/ext/filters/client_channel/lb_policy_factory.cc
+  src/core/ext/filters/client_channel/lb_policy_registry.cc
+  src/core/ext/filters/client_channel/parse_address.cc
+  src/core/ext/filters/client_channel/proxy_mapper.cc
+  src/core/ext/filters/client_channel/proxy_mapper_registry.cc
+  src/core/ext/filters/client_channel/resolver.cc
+  src/core/ext/filters/client_channel/resolver_factory.cc
+  src/core/ext/filters/client_channel/resolver_registry.cc
+  src/core/ext/filters/client_channel/retry_throttle.cc
+  src/core/ext/filters/client_channel/subchannel.cc
+  src/core/ext/filters/client_channel/subchannel_index.cc
+  src/core/ext/filters/client_channel/uri_parser.cc
+  src/core/ext/filters/deadline/deadline_filter.cc
+  src/core/ext/transport/chttp2/transport/bin_decoder.cc
+  src/core/ext/transport/chttp2/transport/bin_encoder.cc
+  src/core/ext/transport/chttp2/transport/chttp2_plugin.cc
+  src/core/ext/transport/chttp2/transport/chttp2_transport.cc
+  src/core/ext/transport/chttp2/transport/flow_control.cc
+  src/core/ext/transport/chttp2/transport/frame_data.cc
+  src/core/ext/transport/chttp2/transport/frame_goaway.cc
+  src/core/ext/transport/chttp2/transport/frame_ping.cc
+  src/core/ext/transport/chttp2/transport/frame_rst_stream.cc
+  src/core/ext/transport/chttp2/transport/frame_settings.cc
+  src/core/ext/transport/chttp2/transport/frame_window_update.cc
+  src/core/ext/transport/chttp2/transport/hpack_encoder.cc
+  src/core/ext/transport/chttp2/transport/hpack_parser.cc
+  src/core/ext/transport/chttp2/transport/hpack_table.cc
+  src/core/ext/transport/chttp2/transport/http2_settings.cc
+  src/core/ext/transport/chttp2/transport/huffsyms.cc
+  src/core/ext/transport/chttp2/transport/incoming_metadata.cc
+  src/core/ext/transport/chttp2/transport/parsing.cc
+  src/core/ext/transport/chttp2/transport/stream_lists.cc
+  src/core/ext/transport/chttp2/transport/stream_map.cc
+  src/core/ext/transport/chttp2/transport/varint.cc
+  src/core/ext/transport/chttp2/transport/writing.cc
+  src/core/ext/transport/chttp2/alpn/alpn.cc
+  src/core/ext/filters/http/client/http_client_filter.cc
+  src/core/ext/filters/http/http_filters_plugin.cc
+  src/core/ext/filters/http/message_compress/message_compress_filter.cc
+  src/core/ext/filters/http/server/http_server_filter.cc
 )
 
 if(WIN32 AND MSVC)
@@ -2135,236 +2135,236 @@
 endif (gRPC_BUILD_TESTS)
 
 add_library(grpc_unsecure
-  src/core/lib/surface/init.c
-  src/core/lib/surface/init_unsecure.c
-  src/core/lib/channel/channel_args.c
-  src/core/lib/channel/channel_stack.c
-  src/core/lib/channel/channel_stack_builder.c
-  src/core/lib/channel/connected_channel.c
-  src/core/lib/channel/handshaker.c
-  src/core/lib/channel/handshaker_factory.c
-  src/core/lib/channel/handshaker_registry.c
-  src/core/lib/compression/compression.c
-  src/core/lib/compression/message_compress.c
-  src/core/lib/compression/stream_compression.c
-  src/core/lib/compression/stream_compression_gzip.c
-  src/core/lib/compression/stream_compression_identity.c
-  src/core/lib/debug/stats.c
-  src/core/lib/debug/stats_data.c
-  src/core/lib/http/format_request.c
-  src/core/lib/http/httpcli.c
-  src/core/lib/http/parser.c
-  src/core/lib/iomgr/call_combiner.c
-  src/core/lib/iomgr/closure.c
-  src/core/lib/iomgr/combiner.c
-  src/core/lib/iomgr/endpoint.c
-  src/core/lib/iomgr/endpoint_pair_posix.c
-  src/core/lib/iomgr/endpoint_pair_uv.c
-  src/core/lib/iomgr/endpoint_pair_windows.c
-  src/core/lib/iomgr/error.c
-  src/core/lib/iomgr/ev_epoll1_linux.c
-  src/core/lib/iomgr/ev_epollex_linux.c
-  src/core/lib/iomgr/ev_epollsig_linux.c
-  src/core/lib/iomgr/ev_poll_posix.c
-  src/core/lib/iomgr/ev_posix.c
-  src/core/lib/iomgr/ev_windows.c
-  src/core/lib/iomgr/exec_ctx.c
-  src/core/lib/iomgr/executor.c
-  src/core/lib/iomgr/gethostname_fallback.c
-  src/core/lib/iomgr/gethostname_host_name_max.c
-  src/core/lib/iomgr/gethostname_sysconf.c
-  src/core/lib/iomgr/iocp_windows.c
-  src/core/lib/iomgr/iomgr.c
-  src/core/lib/iomgr/iomgr_posix.c
-  src/core/lib/iomgr/iomgr_uv.c
-  src/core/lib/iomgr/iomgr_windows.c
-  src/core/lib/iomgr/is_epollexclusive_available.c
-  src/core/lib/iomgr/load_file.c
-  src/core/lib/iomgr/lockfree_event.c
-  src/core/lib/iomgr/network_status_tracker.c
-  src/core/lib/iomgr/polling_entity.c
-  src/core/lib/iomgr/pollset_set_uv.c
-  src/core/lib/iomgr/pollset_set_windows.c
-  src/core/lib/iomgr/pollset_uv.c
-  src/core/lib/iomgr/pollset_windows.c
-  src/core/lib/iomgr/resolve_address_posix.c
-  src/core/lib/iomgr/resolve_address_uv.c
-  src/core/lib/iomgr/resolve_address_windows.c
-  src/core/lib/iomgr/resource_quota.c
-  src/core/lib/iomgr/sockaddr_utils.c
-  src/core/lib/iomgr/socket_factory_posix.c
-  src/core/lib/iomgr/socket_mutator.c
-  src/core/lib/iomgr/socket_utils_common_posix.c
-  src/core/lib/iomgr/socket_utils_linux.c
-  src/core/lib/iomgr/socket_utils_posix.c
-  src/core/lib/iomgr/socket_utils_uv.c
-  src/core/lib/iomgr/socket_utils_windows.c
-  src/core/lib/iomgr/socket_windows.c
-  src/core/lib/iomgr/tcp_client_posix.c
-  src/core/lib/iomgr/tcp_client_uv.c
-  src/core/lib/iomgr/tcp_client_windows.c
-  src/core/lib/iomgr/tcp_posix.c
-  src/core/lib/iomgr/tcp_server_posix.c
-  src/core/lib/iomgr/tcp_server_utils_posix_common.c
-  src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c
-  src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c
-  src/core/lib/iomgr/tcp_server_uv.c
-  src/core/lib/iomgr/tcp_server_windows.c
-  src/core/lib/iomgr/tcp_uv.c
-  src/core/lib/iomgr/tcp_windows.c
-  src/core/lib/iomgr/time_averaged_stats.c
-  src/core/lib/iomgr/timer_generic.c
-  src/core/lib/iomgr/timer_heap.c
-  src/core/lib/iomgr/timer_manager.c
-  src/core/lib/iomgr/timer_uv.c
-  src/core/lib/iomgr/udp_server.c
-  src/core/lib/iomgr/unix_sockets_posix.c
-  src/core/lib/iomgr/unix_sockets_posix_noop.c
-  src/core/lib/iomgr/wakeup_fd_cv.c
-  src/core/lib/iomgr/wakeup_fd_eventfd.c
-  src/core/lib/iomgr/wakeup_fd_nospecial.c
-  src/core/lib/iomgr/wakeup_fd_pipe.c
-  src/core/lib/iomgr/wakeup_fd_posix.c
-  src/core/lib/json/json.c
-  src/core/lib/json/json_reader.c
-  src/core/lib/json/json_string.c
-  src/core/lib/json/json_writer.c
-  src/core/lib/slice/b64.c
-  src/core/lib/slice/percent_encoding.c
-  src/core/lib/slice/slice.c
-  src/core/lib/slice/slice_buffer.c
-  src/core/lib/slice/slice_hash_table.c
-  src/core/lib/slice/slice_intern.c
-  src/core/lib/slice/slice_string_helpers.c
-  src/core/lib/surface/alarm.c
-  src/core/lib/surface/api_trace.c
-  src/core/lib/surface/byte_buffer.c
-  src/core/lib/surface/byte_buffer_reader.c
-  src/core/lib/surface/call.c
-  src/core/lib/surface/call_details.c
-  src/core/lib/surface/call_log_batch.c
-  src/core/lib/surface/channel.c
-  src/core/lib/surface/channel_init.c
-  src/core/lib/surface/channel_ping.c
-  src/core/lib/surface/channel_stack_type.c
-  src/core/lib/surface/completion_queue.c
-  src/core/lib/surface/completion_queue_factory.c
-  src/core/lib/surface/event_string.c
+  src/core/lib/surface/init.cc
+  src/core/lib/surface/init_unsecure.cc
+  src/core/lib/channel/channel_args.cc
+  src/core/lib/channel/channel_stack.cc
+  src/core/lib/channel/channel_stack_builder.cc
+  src/core/lib/channel/connected_channel.cc
+  src/core/lib/channel/handshaker.cc
+  src/core/lib/channel/handshaker_factory.cc
+  src/core/lib/channel/handshaker_registry.cc
+  src/core/lib/compression/compression.cc
+  src/core/lib/compression/message_compress.cc
+  src/core/lib/compression/stream_compression.cc
+  src/core/lib/compression/stream_compression_gzip.cc
+  src/core/lib/compression/stream_compression_identity.cc
+  src/core/lib/debug/stats.cc
+  src/core/lib/debug/stats_data.cc
+  src/core/lib/http/format_request.cc
+  src/core/lib/http/httpcli.cc
+  src/core/lib/http/parser.cc
+  src/core/lib/iomgr/call_combiner.cc
+  src/core/lib/iomgr/closure.cc
+  src/core/lib/iomgr/combiner.cc
+  src/core/lib/iomgr/endpoint.cc
+  src/core/lib/iomgr/endpoint_pair_posix.cc
+  src/core/lib/iomgr/endpoint_pair_uv.cc
+  src/core/lib/iomgr/endpoint_pair_windows.cc
+  src/core/lib/iomgr/error.cc
+  src/core/lib/iomgr/ev_epoll1_linux.cc
+  src/core/lib/iomgr/ev_epollex_linux.cc
+  src/core/lib/iomgr/ev_epollsig_linux.cc
+  src/core/lib/iomgr/ev_poll_posix.cc
+  src/core/lib/iomgr/ev_posix.cc
+  src/core/lib/iomgr/ev_windows.cc
+  src/core/lib/iomgr/exec_ctx.cc
+  src/core/lib/iomgr/executor.cc
+  src/core/lib/iomgr/gethostname_fallback.cc
+  src/core/lib/iomgr/gethostname_host_name_max.cc
+  src/core/lib/iomgr/gethostname_sysconf.cc
+  src/core/lib/iomgr/iocp_windows.cc
+  src/core/lib/iomgr/iomgr.cc
+  src/core/lib/iomgr/iomgr_posix.cc
+  src/core/lib/iomgr/iomgr_uv.cc
+  src/core/lib/iomgr/iomgr_windows.cc
+  src/core/lib/iomgr/is_epollexclusive_available.cc
+  src/core/lib/iomgr/load_file.cc
+  src/core/lib/iomgr/lockfree_event.cc
+  src/core/lib/iomgr/network_status_tracker.cc
+  src/core/lib/iomgr/polling_entity.cc
+  src/core/lib/iomgr/pollset_set_uv.cc
+  src/core/lib/iomgr/pollset_set_windows.cc
+  src/core/lib/iomgr/pollset_uv.cc
+  src/core/lib/iomgr/pollset_windows.cc
+  src/core/lib/iomgr/resolve_address_posix.cc
+  src/core/lib/iomgr/resolve_address_uv.cc
+  src/core/lib/iomgr/resolve_address_windows.cc
+  src/core/lib/iomgr/resource_quota.cc
+  src/core/lib/iomgr/sockaddr_utils.cc
+  src/core/lib/iomgr/socket_factory_posix.cc
+  src/core/lib/iomgr/socket_mutator.cc
+  src/core/lib/iomgr/socket_utils_common_posix.cc
+  src/core/lib/iomgr/socket_utils_linux.cc
+  src/core/lib/iomgr/socket_utils_posix.cc
+  src/core/lib/iomgr/socket_utils_uv.cc
+  src/core/lib/iomgr/socket_utils_windows.cc
+  src/core/lib/iomgr/socket_windows.cc
+  src/core/lib/iomgr/tcp_client_posix.cc
+  src/core/lib/iomgr/tcp_client_uv.cc
+  src/core/lib/iomgr/tcp_client_windows.cc
+  src/core/lib/iomgr/tcp_posix.cc
+  src/core/lib/iomgr/tcp_server_posix.cc
+  src/core/lib/iomgr/tcp_server_utils_posix_common.cc
+  src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc
+  src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc
+  src/core/lib/iomgr/tcp_server_uv.cc
+  src/core/lib/iomgr/tcp_server_windows.cc
+  src/core/lib/iomgr/tcp_uv.cc
+  src/core/lib/iomgr/tcp_windows.cc
+  src/core/lib/iomgr/time_averaged_stats.cc
+  src/core/lib/iomgr/timer_generic.cc
+  src/core/lib/iomgr/timer_heap.cc
+  src/core/lib/iomgr/timer_manager.cc
+  src/core/lib/iomgr/timer_uv.cc
+  src/core/lib/iomgr/udp_server.cc
+  src/core/lib/iomgr/unix_sockets_posix.cc
+  src/core/lib/iomgr/unix_sockets_posix_noop.cc
+  src/core/lib/iomgr/wakeup_fd_cv.cc
+  src/core/lib/iomgr/wakeup_fd_eventfd.cc
+  src/core/lib/iomgr/wakeup_fd_nospecial.cc
+  src/core/lib/iomgr/wakeup_fd_pipe.cc
+  src/core/lib/iomgr/wakeup_fd_posix.cc
+  src/core/lib/json/json.cc
+  src/core/lib/json/json_reader.cc
+  src/core/lib/json/json_string.cc
+  src/core/lib/json/json_writer.cc
+  src/core/lib/slice/b64.cc
+  src/core/lib/slice/percent_encoding.cc
+  src/core/lib/slice/slice.cc
+  src/core/lib/slice/slice_buffer.cc
+  src/core/lib/slice/slice_hash_table.cc
+  src/core/lib/slice/slice_intern.cc
+  src/core/lib/slice/slice_string_helpers.cc
+  src/core/lib/surface/alarm.cc
+  src/core/lib/surface/api_trace.cc
+  src/core/lib/surface/byte_buffer.cc
+  src/core/lib/surface/byte_buffer_reader.cc
+  src/core/lib/surface/call.cc
+  src/core/lib/surface/call_details.cc
+  src/core/lib/surface/call_log_batch.cc
+  src/core/lib/surface/channel.cc
+  src/core/lib/surface/channel_init.cc
+  src/core/lib/surface/channel_ping.cc
+  src/core/lib/surface/channel_stack_type.cc
+  src/core/lib/surface/completion_queue.cc
+  src/core/lib/surface/completion_queue_factory.cc
+  src/core/lib/surface/event_string.cc
   src/core/lib/surface/lame_client.cc
-  src/core/lib/surface/metadata_array.c
-  src/core/lib/surface/server.c
-  src/core/lib/surface/validate_metadata.c
-  src/core/lib/surface/version.c
-  src/core/lib/transport/bdp_estimator.c
-  src/core/lib/transport/byte_stream.c
-  src/core/lib/transport/connectivity_state.c
-  src/core/lib/transport/error_utils.c
-  src/core/lib/transport/metadata.c
-  src/core/lib/transport/metadata_batch.c
-  src/core/lib/transport/pid_controller.c
-  src/core/lib/transport/service_config.c
-  src/core/lib/transport/static_metadata.c
-  src/core/lib/transport/status_conversion.c
-  src/core/lib/transport/timeout_encoding.c
-  src/core/lib/transport/transport.c
-  src/core/lib/transport/transport_op_string.c
-  src/core/lib/debug/trace.c
-  src/core/ext/transport/chttp2/server/insecure/server_chttp2.c
-  src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c
-  src/core/ext/transport/chttp2/transport/bin_decoder.c
-  src/core/ext/transport/chttp2/transport/bin_encoder.c
-  src/core/ext/transport/chttp2/transport/chttp2_plugin.c
-  src/core/ext/transport/chttp2/transport/chttp2_transport.c
-  src/core/ext/transport/chttp2/transport/flow_control.c
-  src/core/ext/transport/chttp2/transport/frame_data.c
-  src/core/ext/transport/chttp2/transport/frame_goaway.c
-  src/core/ext/transport/chttp2/transport/frame_ping.c
-  src/core/ext/transport/chttp2/transport/frame_rst_stream.c
-  src/core/ext/transport/chttp2/transport/frame_settings.c
-  src/core/ext/transport/chttp2/transport/frame_window_update.c
-  src/core/ext/transport/chttp2/transport/hpack_encoder.c
-  src/core/ext/transport/chttp2/transport/hpack_parser.c
-  src/core/ext/transport/chttp2/transport/hpack_table.c
-  src/core/ext/transport/chttp2/transport/http2_settings.c
-  src/core/ext/transport/chttp2/transport/huffsyms.c
-  src/core/ext/transport/chttp2/transport/incoming_metadata.c
-  src/core/ext/transport/chttp2/transport/parsing.c
-  src/core/ext/transport/chttp2/transport/stream_lists.c
-  src/core/ext/transport/chttp2/transport/stream_map.c
-  src/core/ext/transport/chttp2/transport/varint.c
-  src/core/ext/transport/chttp2/transport/writing.c
-  src/core/ext/transport/chttp2/alpn/alpn.c
-  src/core/ext/filters/http/client/http_client_filter.c
-  src/core/ext/filters/http/http_filters_plugin.c
-  src/core/ext/filters/http/message_compress/message_compress_filter.c
-  src/core/ext/filters/http/server/http_server_filter.c
-  src/core/ext/transport/chttp2/server/chttp2_server.c
-  src/core/ext/transport/chttp2/client/insecure/channel_create.c
-  src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c
-  src/core/ext/transport/chttp2/client/chttp2_connector.c
-  src/core/ext/filters/client_channel/channel_connectivity.c
-  src/core/ext/filters/client_channel/client_channel.c
-  src/core/ext/filters/client_channel/client_channel_factory.c
-  src/core/ext/filters/client_channel/client_channel_plugin.c
-  src/core/ext/filters/client_channel/connector.c
-  src/core/ext/filters/client_channel/http_connect_handshaker.c
-  src/core/ext/filters/client_channel/http_proxy.c
-  src/core/ext/filters/client_channel/lb_policy.c
-  src/core/ext/filters/client_channel/lb_policy_factory.c
-  src/core/ext/filters/client_channel/lb_policy_registry.c
-  src/core/ext/filters/client_channel/parse_address.c
-  src/core/ext/filters/client_channel/proxy_mapper.c
-  src/core/ext/filters/client_channel/proxy_mapper_registry.c
-  src/core/ext/filters/client_channel/resolver.c
-  src/core/ext/filters/client_channel/resolver_factory.c
-  src/core/ext/filters/client_channel/resolver_registry.c
-  src/core/ext/filters/client_channel/retry_throttle.c
-  src/core/ext/filters/client_channel/subchannel.c
-  src/core/ext/filters/client_channel/subchannel_index.c
-  src/core/ext/filters/client_channel/uri_parser.c
-  src/core/ext/filters/deadline/deadline_filter.c
-  src/core/ext/transport/inproc/inproc_plugin.c
-  src/core/ext/transport/inproc/inproc_transport.c
-  src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c
-  src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c
-  src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c
-  src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c
-  src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c
-  src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c
-  src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c
-  src/core/ext/filters/load_reporting/server_load_reporting_filter.c
-  src/core/ext/filters/load_reporting/server_load_reporting_plugin.c
-  src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c
-  src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c
-  src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.c
-  src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c
-  src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c
+  src/core/lib/surface/metadata_array.cc
+  src/core/lib/surface/server.cc
+  src/core/lib/surface/validate_metadata.cc
+  src/core/lib/surface/version.cc
+  src/core/lib/transport/bdp_estimator.cc
+  src/core/lib/transport/byte_stream.cc
+  src/core/lib/transport/connectivity_state.cc
+  src/core/lib/transport/error_utils.cc
+  src/core/lib/transport/metadata.cc
+  src/core/lib/transport/metadata_batch.cc
+  src/core/lib/transport/pid_controller.cc
+  src/core/lib/transport/service_config.cc
+  src/core/lib/transport/static_metadata.cc
+  src/core/lib/transport/status_conversion.cc
+  src/core/lib/transport/timeout_encoding.cc
+  src/core/lib/transport/transport.cc
+  src/core/lib/transport/transport_op_string.cc
+  src/core/lib/debug/trace.cc
+  src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc
+  src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc
+  src/core/ext/transport/chttp2/transport/bin_decoder.cc
+  src/core/ext/transport/chttp2/transport/bin_encoder.cc
+  src/core/ext/transport/chttp2/transport/chttp2_plugin.cc
+  src/core/ext/transport/chttp2/transport/chttp2_transport.cc
+  src/core/ext/transport/chttp2/transport/flow_control.cc
+  src/core/ext/transport/chttp2/transport/frame_data.cc
+  src/core/ext/transport/chttp2/transport/frame_goaway.cc
+  src/core/ext/transport/chttp2/transport/frame_ping.cc
+  src/core/ext/transport/chttp2/transport/frame_rst_stream.cc
+  src/core/ext/transport/chttp2/transport/frame_settings.cc
+  src/core/ext/transport/chttp2/transport/frame_window_update.cc
+  src/core/ext/transport/chttp2/transport/hpack_encoder.cc
+  src/core/ext/transport/chttp2/transport/hpack_parser.cc
+  src/core/ext/transport/chttp2/transport/hpack_table.cc
+  src/core/ext/transport/chttp2/transport/http2_settings.cc
+  src/core/ext/transport/chttp2/transport/huffsyms.cc
+  src/core/ext/transport/chttp2/transport/incoming_metadata.cc
+  src/core/ext/transport/chttp2/transport/parsing.cc
+  src/core/ext/transport/chttp2/transport/stream_lists.cc
+  src/core/ext/transport/chttp2/transport/stream_map.cc
+  src/core/ext/transport/chttp2/transport/varint.cc
+  src/core/ext/transport/chttp2/transport/writing.cc
+  src/core/ext/transport/chttp2/alpn/alpn.cc
+  src/core/ext/filters/http/client/http_client_filter.cc
+  src/core/ext/filters/http/http_filters_plugin.cc
+  src/core/ext/filters/http/message_compress/message_compress_filter.cc
+  src/core/ext/filters/http/server/http_server_filter.cc
+  src/core/ext/transport/chttp2/server/chttp2_server.cc
+  src/core/ext/transport/chttp2/client/insecure/channel_create.cc
+  src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc
+  src/core/ext/transport/chttp2/client/chttp2_connector.cc
+  src/core/ext/filters/client_channel/channel_connectivity.cc
+  src/core/ext/filters/client_channel/client_channel.cc
+  src/core/ext/filters/client_channel/client_channel_factory.cc
+  src/core/ext/filters/client_channel/client_channel_plugin.cc
+  src/core/ext/filters/client_channel/connector.cc
+  src/core/ext/filters/client_channel/http_connect_handshaker.cc
+  src/core/ext/filters/client_channel/http_proxy.cc
+  src/core/ext/filters/client_channel/lb_policy.cc
+  src/core/ext/filters/client_channel/lb_policy_factory.cc
+  src/core/ext/filters/client_channel/lb_policy_registry.cc
+  src/core/ext/filters/client_channel/parse_address.cc
+  src/core/ext/filters/client_channel/proxy_mapper.cc
+  src/core/ext/filters/client_channel/proxy_mapper_registry.cc
+  src/core/ext/filters/client_channel/resolver.cc
+  src/core/ext/filters/client_channel/resolver_factory.cc
+  src/core/ext/filters/client_channel/resolver_registry.cc
+  src/core/ext/filters/client_channel/retry_throttle.cc
+  src/core/ext/filters/client_channel/subchannel.cc
+  src/core/ext/filters/client_channel/subchannel_index.cc
+  src/core/ext/filters/client_channel/uri_parser.cc
+  src/core/ext/filters/deadline/deadline_filter.cc
+  src/core/ext/transport/inproc/inproc_plugin.cc
+  src/core/ext/transport/inproc/inproc_transport.cc
+  src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc
+  src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc
+  src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc
+  src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc
+  src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc
+  src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc
+  src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc
+  src/core/ext/filters/load_reporting/server_load_reporting_filter.cc
+  src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc
+  src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc
+  src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc
+  src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.cc
+  src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc
+  src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc
   src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c
   third_party/nanopb/pb_common.c
   third_party/nanopb/pb_decode.c
   third_party/nanopb/pb_encode.c
-  src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c
-  src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c
-  src/core/ext/census/base_resources.c
-  src/core/ext/census/context.c
+  src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc
+  src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc
+  src/core/ext/census/base_resources.cc
+  src/core/ext/census/context.cc
   src/core/ext/census/gen/census.pb.c
   src/core/ext/census/gen/trace_context.pb.c
-  src/core/ext/census/grpc_context.c
-  src/core/ext/census/grpc_filter.c
-  src/core/ext/census/grpc_plugin.c
-  src/core/ext/census/initialize.c
-  src/core/ext/census/intrusive_hash_map.c
-  src/core/ext/census/mlog.c
-  src/core/ext/census/operation.c
-  src/core/ext/census/placeholders.c
-  src/core/ext/census/resource.c
-  src/core/ext/census/trace_context.c
-  src/core/ext/census/tracing.c
-  src/core/ext/filters/max_age/max_age_filter.c
-  src/core/ext/filters/message_size/message_size_filter.c
-  src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c
-  src/core/ext/filters/workarounds/workaround_utils.c
-  src/core/plugin_registry/grpc_unsecure_plugin_registry.c
+  src/core/ext/census/grpc_context.cc
+  src/core/ext/census/grpc_filter.cc
+  src/core/ext/census/grpc_plugin.cc
+  src/core/ext/census/initialize.cc
+  src/core/ext/census/intrusive_hash_map.cc
+  src/core/ext/census/mlog.cc
+  src/core/ext/census/operation.cc
+  src/core/ext/census/placeholders.cc
+  src/core/ext/census/resource.cc
+  src/core/ext/census/trace_context.cc
+  src/core/ext/census/tracing.cc
+  src/core/ext/filters/max_age/max_age_filter.cc
+  src/core/ext/filters/message_size/message_size_filter.cc
+  src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc
+  src/core/ext/filters/workarounds/workaround_utils.cc
+  src/core/plugin_registry/grpc_unsecure_plugin_registry.cc
 )
 
 if(WIN32 AND MSVC)
@@ -2869,207 +2869,207 @@
   src/cpp/util/string_ref.cc
   src/cpp/util/time_cc.cc
   src/cpp/codegen/codegen_init.cc
-  src/core/ext/transport/chttp2/client/insecure/channel_create.c
-  src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c
-  src/core/ext/transport/chttp2/client/chttp2_connector.c
-  src/core/ext/transport/chttp2/transport/bin_decoder.c
-  src/core/ext/transport/chttp2/transport/bin_encoder.c
-  src/core/ext/transport/chttp2/transport/chttp2_plugin.c
-  src/core/ext/transport/chttp2/transport/chttp2_transport.c
-  src/core/ext/transport/chttp2/transport/flow_control.c
-  src/core/ext/transport/chttp2/transport/frame_data.c
-  src/core/ext/transport/chttp2/transport/frame_goaway.c
-  src/core/ext/transport/chttp2/transport/frame_ping.c
-  src/core/ext/transport/chttp2/transport/frame_rst_stream.c
-  src/core/ext/transport/chttp2/transport/frame_settings.c
-  src/core/ext/transport/chttp2/transport/frame_window_update.c
-  src/core/ext/transport/chttp2/transport/hpack_encoder.c
-  src/core/ext/transport/chttp2/transport/hpack_parser.c
-  src/core/ext/transport/chttp2/transport/hpack_table.c
-  src/core/ext/transport/chttp2/transport/http2_settings.c
-  src/core/ext/transport/chttp2/transport/huffsyms.c
-  src/core/ext/transport/chttp2/transport/incoming_metadata.c
-  src/core/ext/transport/chttp2/transport/parsing.c
-  src/core/ext/transport/chttp2/transport/stream_lists.c
-  src/core/ext/transport/chttp2/transport/stream_map.c
-  src/core/ext/transport/chttp2/transport/varint.c
-  src/core/ext/transport/chttp2/transport/writing.c
-  src/core/lib/channel/channel_args.c
-  src/core/lib/channel/channel_stack.c
-  src/core/lib/channel/channel_stack_builder.c
-  src/core/lib/channel/connected_channel.c
-  src/core/lib/channel/handshaker.c
-  src/core/lib/channel/handshaker_factory.c
-  src/core/lib/channel/handshaker_registry.c
-  src/core/lib/compression/compression.c
-  src/core/lib/compression/message_compress.c
-  src/core/lib/compression/stream_compression.c
-  src/core/lib/compression/stream_compression_gzip.c
-  src/core/lib/compression/stream_compression_identity.c
-  src/core/lib/debug/stats.c
-  src/core/lib/debug/stats_data.c
-  src/core/lib/http/format_request.c
-  src/core/lib/http/httpcli.c
-  src/core/lib/http/parser.c
-  src/core/lib/iomgr/call_combiner.c
-  src/core/lib/iomgr/closure.c
-  src/core/lib/iomgr/combiner.c
-  src/core/lib/iomgr/endpoint.c
-  src/core/lib/iomgr/endpoint_pair_posix.c
-  src/core/lib/iomgr/endpoint_pair_uv.c
-  src/core/lib/iomgr/endpoint_pair_windows.c
-  src/core/lib/iomgr/error.c
-  src/core/lib/iomgr/ev_epoll1_linux.c
-  src/core/lib/iomgr/ev_epollex_linux.c
-  src/core/lib/iomgr/ev_epollsig_linux.c
-  src/core/lib/iomgr/ev_poll_posix.c
-  src/core/lib/iomgr/ev_posix.c
-  src/core/lib/iomgr/ev_windows.c
-  src/core/lib/iomgr/exec_ctx.c
-  src/core/lib/iomgr/executor.c
-  src/core/lib/iomgr/gethostname_fallback.c
-  src/core/lib/iomgr/gethostname_host_name_max.c
-  src/core/lib/iomgr/gethostname_sysconf.c
-  src/core/lib/iomgr/iocp_windows.c
-  src/core/lib/iomgr/iomgr.c
-  src/core/lib/iomgr/iomgr_posix.c
-  src/core/lib/iomgr/iomgr_uv.c
-  src/core/lib/iomgr/iomgr_windows.c
-  src/core/lib/iomgr/is_epollexclusive_available.c
-  src/core/lib/iomgr/load_file.c
-  src/core/lib/iomgr/lockfree_event.c
-  src/core/lib/iomgr/network_status_tracker.c
-  src/core/lib/iomgr/polling_entity.c
-  src/core/lib/iomgr/pollset_set_uv.c
-  src/core/lib/iomgr/pollset_set_windows.c
-  src/core/lib/iomgr/pollset_uv.c
-  src/core/lib/iomgr/pollset_windows.c
-  src/core/lib/iomgr/resolve_address_posix.c
-  src/core/lib/iomgr/resolve_address_uv.c
-  src/core/lib/iomgr/resolve_address_windows.c
-  src/core/lib/iomgr/resource_quota.c
-  src/core/lib/iomgr/sockaddr_utils.c
-  src/core/lib/iomgr/socket_factory_posix.c
-  src/core/lib/iomgr/socket_mutator.c
-  src/core/lib/iomgr/socket_utils_common_posix.c
-  src/core/lib/iomgr/socket_utils_linux.c
-  src/core/lib/iomgr/socket_utils_posix.c
-  src/core/lib/iomgr/socket_utils_uv.c
-  src/core/lib/iomgr/socket_utils_windows.c
-  src/core/lib/iomgr/socket_windows.c
-  src/core/lib/iomgr/tcp_client_posix.c
-  src/core/lib/iomgr/tcp_client_uv.c
-  src/core/lib/iomgr/tcp_client_windows.c
-  src/core/lib/iomgr/tcp_posix.c
-  src/core/lib/iomgr/tcp_server_posix.c
-  src/core/lib/iomgr/tcp_server_utils_posix_common.c
-  src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c
-  src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c
-  src/core/lib/iomgr/tcp_server_uv.c
-  src/core/lib/iomgr/tcp_server_windows.c
-  src/core/lib/iomgr/tcp_uv.c
-  src/core/lib/iomgr/tcp_windows.c
-  src/core/lib/iomgr/time_averaged_stats.c
-  src/core/lib/iomgr/timer_generic.c
-  src/core/lib/iomgr/timer_heap.c
-  src/core/lib/iomgr/timer_manager.c
-  src/core/lib/iomgr/timer_uv.c
-  src/core/lib/iomgr/udp_server.c
-  src/core/lib/iomgr/unix_sockets_posix.c
-  src/core/lib/iomgr/unix_sockets_posix_noop.c
-  src/core/lib/iomgr/wakeup_fd_cv.c
-  src/core/lib/iomgr/wakeup_fd_eventfd.c
-  src/core/lib/iomgr/wakeup_fd_nospecial.c
-  src/core/lib/iomgr/wakeup_fd_pipe.c
-  src/core/lib/iomgr/wakeup_fd_posix.c
-  src/core/lib/json/json.c
-  src/core/lib/json/json_reader.c
-  src/core/lib/json/json_string.c
-  src/core/lib/json/json_writer.c
-  src/core/lib/slice/b64.c
-  src/core/lib/slice/percent_encoding.c
-  src/core/lib/slice/slice.c
-  src/core/lib/slice/slice_buffer.c
-  src/core/lib/slice/slice_hash_table.c
-  src/core/lib/slice/slice_intern.c
-  src/core/lib/slice/slice_string_helpers.c
-  src/core/lib/surface/alarm.c
-  src/core/lib/surface/api_trace.c
-  src/core/lib/surface/byte_buffer.c
-  src/core/lib/surface/byte_buffer_reader.c
-  src/core/lib/surface/call.c
-  src/core/lib/surface/call_details.c
-  src/core/lib/surface/call_log_batch.c
-  src/core/lib/surface/channel.c
-  src/core/lib/surface/channel_init.c
-  src/core/lib/surface/channel_ping.c
-  src/core/lib/surface/channel_stack_type.c
-  src/core/lib/surface/completion_queue.c
-  src/core/lib/surface/completion_queue_factory.c
-  src/core/lib/surface/event_string.c
+  src/core/ext/transport/chttp2/client/insecure/channel_create.cc
+  src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc
+  src/core/ext/transport/chttp2/client/chttp2_connector.cc
+  src/core/ext/transport/chttp2/transport/bin_decoder.cc
+  src/core/ext/transport/chttp2/transport/bin_encoder.cc
+  src/core/ext/transport/chttp2/transport/chttp2_plugin.cc
+  src/core/ext/transport/chttp2/transport/chttp2_transport.cc
+  src/core/ext/transport/chttp2/transport/flow_control.cc
+  src/core/ext/transport/chttp2/transport/frame_data.cc
+  src/core/ext/transport/chttp2/transport/frame_goaway.cc
+  src/core/ext/transport/chttp2/transport/frame_ping.cc
+  src/core/ext/transport/chttp2/transport/frame_rst_stream.cc
+  src/core/ext/transport/chttp2/transport/frame_settings.cc
+  src/core/ext/transport/chttp2/transport/frame_window_update.cc
+  src/core/ext/transport/chttp2/transport/hpack_encoder.cc
+  src/core/ext/transport/chttp2/transport/hpack_parser.cc
+  src/core/ext/transport/chttp2/transport/hpack_table.cc
+  src/core/ext/transport/chttp2/transport/http2_settings.cc
+  src/core/ext/transport/chttp2/transport/huffsyms.cc
+  src/core/ext/transport/chttp2/transport/incoming_metadata.cc
+  src/core/ext/transport/chttp2/transport/parsing.cc
+  src/core/ext/transport/chttp2/transport/stream_lists.cc
+  src/core/ext/transport/chttp2/transport/stream_map.cc
+  src/core/ext/transport/chttp2/transport/varint.cc
+  src/core/ext/transport/chttp2/transport/writing.cc
+  src/core/lib/channel/channel_args.cc
+  src/core/lib/channel/channel_stack.cc
+  src/core/lib/channel/channel_stack_builder.cc
+  src/core/lib/channel/connected_channel.cc
+  src/core/lib/channel/handshaker.cc
+  src/core/lib/channel/handshaker_factory.cc
+  src/core/lib/channel/handshaker_registry.cc
+  src/core/lib/compression/compression.cc
+  src/core/lib/compression/message_compress.cc
+  src/core/lib/compression/stream_compression.cc
+  src/core/lib/compression/stream_compression_gzip.cc
+  src/core/lib/compression/stream_compression_identity.cc
+  src/core/lib/debug/stats.cc
+  src/core/lib/debug/stats_data.cc
+  src/core/lib/http/format_request.cc
+  src/core/lib/http/httpcli.cc
+  src/core/lib/http/parser.cc
+  src/core/lib/iomgr/call_combiner.cc
+  src/core/lib/iomgr/closure.cc
+  src/core/lib/iomgr/combiner.cc
+  src/core/lib/iomgr/endpoint.cc
+  src/core/lib/iomgr/endpoint_pair_posix.cc
+  src/core/lib/iomgr/endpoint_pair_uv.cc
+  src/core/lib/iomgr/endpoint_pair_windows.cc
+  src/core/lib/iomgr/error.cc
+  src/core/lib/iomgr/ev_epoll1_linux.cc
+  src/core/lib/iomgr/ev_epollex_linux.cc
+  src/core/lib/iomgr/ev_epollsig_linux.cc
+  src/core/lib/iomgr/ev_poll_posix.cc
+  src/core/lib/iomgr/ev_posix.cc
+  src/core/lib/iomgr/ev_windows.cc
+  src/core/lib/iomgr/exec_ctx.cc
+  src/core/lib/iomgr/executor.cc
+  src/core/lib/iomgr/gethostname_fallback.cc
+  src/core/lib/iomgr/gethostname_host_name_max.cc
+  src/core/lib/iomgr/gethostname_sysconf.cc
+  src/core/lib/iomgr/iocp_windows.cc
+  src/core/lib/iomgr/iomgr.cc
+  src/core/lib/iomgr/iomgr_posix.cc
+  src/core/lib/iomgr/iomgr_uv.cc
+  src/core/lib/iomgr/iomgr_windows.cc
+  src/core/lib/iomgr/is_epollexclusive_available.cc
+  src/core/lib/iomgr/load_file.cc
+  src/core/lib/iomgr/lockfree_event.cc
+  src/core/lib/iomgr/network_status_tracker.cc
+  src/core/lib/iomgr/polling_entity.cc
+  src/core/lib/iomgr/pollset_set_uv.cc
+  src/core/lib/iomgr/pollset_set_windows.cc
+  src/core/lib/iomgr/pollset_uv.cc
+  src/core/lib/iomgr/pollset_windows.cc
+  src/core/lib/iomgr/resolve_address_posix.cc
+  src/core/lib/iomgr/resolve_address_uv.cc
+  src/core/lib/iomgr/resolve_address_windows.cc
+  src/core/lib/iomgr/resource_quota.cc
+  src/core/lib/iomgr/sockaddr_utils.cc
+  src/core/lib/iomgr/socket_factory_posix.cc
+  src/core/lib/iomgr/socket_mutator.cc
+  src/core/lib/iomgr/socket_utils_common_posix.cc
+  src/core/lib/iomgr/socket_utils_linux.cc
+  src/core/lib/iomgr/socket_utils_posix.cc
+  src/core/lib/iomgr/socket_utils_uv.cc
+  src/core/lib/iomgr/socket_utils_windows.cc
+  src/core/lib/iomgr/socket_windows.cc
+  src/core/lib/iomgr/tcp_client_posix.cc
+  src/core/lib/iomgr/tcp_client_uv.cc
+  src/core/lib/iomgr/tcp_client_windows.cc
+  src/core/lib/iomgr/tcp_posix.cc
+  src/core/lib/iomgr/tcp_server_posix.cc
+  src/core/lib/iomgr/tcp_server_utils_posix_common.cc
+  src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc
+  src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc
+  src/core/lib/iomgr/tcp_server_uv.cc
+  src/core/lib/iomgr/tcp_server_windows.cc
+  src/core/lib/iomgr/tcp_uv.cc
+  src/core/lib/iomgr/tcp_windows.cc
+  src/core/lib/iomgr/time_averaged_stats.cc
+  src/core/lib/iomgr/timer_generic.cc
+  src/core/lib/iomgr/timer_heap.cc
+  src/core/lib/iomgr/timer_manager.cc
+  src/core/lib/iomgr/timer_uv.cc
+  src/core/lib/iomgr/udp_server.cc
+  src/core/lib/iomgr/unix_sockets_posix.cc
+  src/core/lib/iomgr/unix_sockets_posix_noop.cc
+  src/core/lib/iomgr/wakeup_fd_cv.cc
+  src/core/lib/iomgr/wakeup_fd_eventfd.cc
+  src/core/lib/iomgr/wakeup_fd_nospecial.cc
+  src/core/lib/iomgr/wakeup_fd_pipe.cc
+  src/core/lib/iomgr/wakeup_fd_posix.cc
+  src/core/lib/json/json.cc
+  src/core/lib/json/json_reader.cc
+  src/core/lib/json/json_string.cc
+  src/core/lib/json/json_writer.cc
+  src/core/lib/slice/b64.cc
+  src/core/lib/slice/percent_encoding.cc
+  src/core/lib/slice/slice.cc
+  src/core/lib/slice/slice_buffer.cc
+  src/core/lib/slice/slice_hash_table.cc
+  src/core/lib/slice/slice_intern.cc
+  src/core/lib/slice/slice_string_helpers.cc
+  src/core/lib/surface/alarm.cc
+  src/core/lib/surface/api_trace.cc
+  src/core/lib/surface/byte_buffer.cc
+  src/core/lib/surface/byte_buffer_reader.cc
+  src/core/lib/surface/call.cc
+  src/core/lib/surface/call_details.cc
+  src/core/lib/surface/call_log_batch.cc
+  src/core/lib/surface/channel.cc
+  src/core/lib/surface/channel_init.cc
+  src/core/lib/surface/channel_ping.cc
+  src/core/lib/surface/channel_stack_type.cc
+  src/core/lib/surface/completion_queue.cc
+  src/core/lib/surface/completion_queue_factory.cc
+  src/core/lib/surface/event_string.cc
   src/core/lib/surface/lame_client.cc
-  src/core/lib/surface/metadata_array.c
-  src/core/lib/surface/server.c
-  src/core/lib/surface/validate_metadata.c
-  src/core/lib/surface/version.c
-  src/core/lib/transport/bdp_estimator.c
-  src/core/lib/transport/byte_stream.c
-  src/core/lib/transport/connectivity_state.c
-  src/core/lib/transport/error_utils.c
-  src/core/lib/transport/metadata.c
-  src/core/lib/transport/metadata_batch.c
-  src/core/lib/transport/pid_controller.c
-  src/core/lib/transport/service_config.c
-  src/core/lib/transport/static_metadata.c
-  src/core/lib/transport/status_conversion.c
-  src/core/lib/transport/timeout_encoding.c
-  src/core/lib/transport/transport.c
-  src/core/lib/transport/transport_op_string.c
-  src/core/lib/debug/trace.c
-  src/core/ext/transport/chttp2/alpn/alpn.c
-  src/core/ext/filters/http/client/http_client_filter.c
-  src/core/ext/filters/http/http_filters_plugin.c
-  src/core/ext/filters/http/message_compress/message_compress_filter.c
-  src/core/ext/filters/http/server/http_server_filter.c
-  src/core/ext/filters/client_channel/channel_connectivity.c
-  src/core/ext/filters/client_channel/client_channel.c
-  src/core/ext/filters/client_channel/client_channel_factory.c
-  src/core/ext/filters/client_channel/client_channel_plugin.c
-  src/core/ext/filters/client_channel/connector.c
-  src/core/ext/filters/client_channel/http_connect_handshaker.c
-  src/core/ext/filters/client_channel/http_proxy.c
-  src/core/ext/filters/client_channel/lb_policy.c
-  src/core/ext/filters/client_channel/lb_policy_factory.c
-  src/core/ext/filters/client_channel/lb_policy_registry.c
-  src/core/ext/filters/client_channel/parse_address.c
-  src/core/ext/filters/client_channel/proxy_mapper.c
-  src/core/ext/filters/client_channel/proxy_mapper_registry.c
-  src/core/ext/filters/client_channel/resolver.c
-  src/core/ext/filters/client_channel/resolver_factory.c
-  src/core/ext/filters/client_channel/resolver_registry.c
-  src/core/ext/filters/client_channel/retry_throttle.c
-  src/core/ext/filters/client_channel/subchannel.c
-  src/core/ext/filters/client_channel/subchannel_index.c
-  src/core/ext/filters/client_channel/uri_parser.c
-  src/core/ext/filters/deadline/deadline_filter.c
-  src/core/ext/transport/chttp2/server/insecure/server_chttp2.c
-  src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c
-  src/core/ext/transport/chttp2/server/chttp2_server.c
-  src/core/ext/census/base_resources.c
-  src/core/ext/census/context.c
+  src/core/lib/surface/metadata_array.cc
+  src/core/lib/surface/server.cc
+  src/core/lib/surface/validate_metadata.cc
+  src/core/lib/surface/version.cc
+  src/core/lib/transport/bdp_estimator.cc
+  src/core/lib/transport/byte_stream.cc
+  src/core/lib/transport/connectivity_state.cc
+  src/core/lib/transport/error_utils.cc
+  src/core/lib/transport/metadata.cc
+  src/core/lib/transport/metadata_batch.cc
+  src/core/lib/transport/pid_controller.cc
+  src/core/lib/transport/service_config.cc
+  src/core/lib/transport/static_metadata.cc
+  src/core/lib/transport/status_conversion.cc
+  src/core/lib/transport/timeout_encoding.cc
+  src/core/lib/transport/transport.cc
+  src/core/lib/transport/transport_op_string.cc
+  src/core/lib/debug/trace.cc
+  src/core/ext/transport/chttp2/alpn/alpn.cc
+  src/core/ext/filters/http/client/http_client_filter.cc
+  src/core/ext/filters/http/http_filters_plugin.cc
+  src/core/ext/filters/http/message_compress/message_compress_filter.cc
+  src/core/ext/filters/http/server/http_server_filter.cc
+  src/core/ext/filters/client_channel/channel_connectivity.cc
+  src/core/ext/filters/client_channel/client_channel.cc
+  src/core/ext/filters/client_channel/client_channel_factory.cc
+  src/core/ext/filters/client_channel/client_channel_plugin.cc
+  src/core/ext/filters/client_channel/connector.cc
+  src/core/ext/filters/client_channel/http_connect_handshaker.cc
+  src/core/ext/filters/client_channel/http_proxy.cc
+  src/core/ext/filters/client_channel/lb_policy.cc
+  src/core/ext/filters/client_channel/lb_policy_factory.cc
+  src/core/ext/filters/client_channel/lb_policy_registry.cc
+  src/core/ext/filters/client_channel/parse_address.cc
+  src/core/ext/filters/client_channel/proxy_mapper.cc
+  src/core/ext/filters/client_channel/proxy_mapper_registry.cc
+  src/core/ext/filters/client_channel/resolver.cc
+  src/core/ext/filters/client_channel/resolver_factory.cc
+  src/core/ext/filters/client_channel/resolver_registry.cc
+  src/core/ext/filters/client_channel/retry_throttle.cc
+  src/core/ext/filters/client_channel/subchannel.cc
+  src/core/ext/filters/client_channel/subchannel_index.cc
+  src/core/ext/filters/client_channel/uri_parser.cc
+  src/core/ext/filters/deadline/deadline_filter.cc
+  src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc
+  src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc
+  src/core/ext/transport/chttp2/server/chttp2_server.cc
+  src/core/ext/census/base_resources.cc
+  src/core/ext/census/context.cc
   src/core/ext/census/gen/census.pb.c
   src/core/ext/census/gen/trace_context.pb.c
-  src/core/ext/census/grpc_context.c
-  src/core/ext/census/grpc_filter.c
-  src/core/ext/census/grpc_plugin.c
-  src/core/ext/census/initialize.c
-  src/core/ext/census/intrusive_hash_map.c
-  src/core/ext/census/mlog.c
-  src/core/ext/census/operation.c
-  src/core/ext/census/placeholders.c
-  src/core/ext/census/resource.c
-  src/core/ext/census/trace_context.c
-  src/core/ext/census/tracing.c
+  src/core/ext/census/grpc_context.cc
+  src/core/ext/census/grpc_filter.cc
+  src/core/ext/census/grpc_plugin.cc
+  src/core/ext/census/initialize.cc
+  src/core/ext/census/intrusive_hash_map.cc
+  src/core/ext/census/mlog.cc
+  src/core/ext/census/operation.cc
+  src/core/ext/census/placeholders.cc
+  src/core/ext/census/resource.cc
+  src/core/ext/census/trace_context.cc
+  src/core/ext/census/tracing.cc
   third_party/nanopb/pb_common.c
   third_party/nanopb/pb_decode.c
   third_party/nanopb/pb_encode.c
diff --git a/Makefile b/Makefile
index 517ddfd..5ea638a 100644
--- a/Makefile
+++ b/Makefile
@@ -187,7 +187,7 @@
 LD_gcov = gcc
 LDXX_gcov = g++
 CPPFLAGS_gcov = -O0 -fprofile-arcs -ftest-coverage -Wno-return-type
-LDFLAGS_gcov = -fprofile-arcs -ftest-coverage -rdynamic
+LDFLAGS_gcov = -fprofile-arcs -ftest-coverage -rdynamic -lstdc++
 DEFINES_gcov = _DEBUG DEBUG GPR_GCOV
 
 VALID_CONFIG_memcheck = 1
@@ -411,8 +411,8 @@
 endif
 
 CORE_VERSION = 5.0.0-dev
-CPP_VERSION = 1.7.0-dev
-CSHARP_VERSION = 1.7.0-dev
+CPP_VERSION = 1.8.0-dev
+CSHARP_VERSION = 1.8.0-dev
 
 CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES))
 CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS)
@@ -2794,52 +2794,52 @@
 
 
 LIBGPR_SRC = \
-    src/core/lib/profiling/basic_timers.c \
-    src/core/lib/profiling/stap_timers.c \
-    src/core/lib/support/alloc.c \
-    src/core/lib/support/arena.c \
-    src/core/lib/support/atm.c \
-    src/core/lib/support/avl.c \
-    src/core/lib/support/backoff.c \
-    src/core/lib/support/cmdline.c \
-    src/core/lib/support/cpu_iphone.c \
-    src/core/lib/support/cpu_linux.c \
-    src/core/lib/support/cpu_posix.c \
-    src/core/lib/support/cpu_windows.c \
-    src/core/lib/support/env_linux.c \
-    src/core/lib/support/env_posix.c \
-    src/core/lib/support/env_windows.c \
-    src/core/lib/support/histogram.c \
-    src/core/lib/support/host_port.c \
-    src/core/lib/support/log.c \
-    src/core/lib/support/log_android.c \
-    src/core/lib/support/log_linux.c \
-    src/core/lib/support/log_posix.c \
-    src/core/lib/support/log_windows.c \
-    src/core/lib/support/mpscq.c \
-    src/core/lib/support/murmur_hash.c \
-    src/core/lib/support/stack_lockfree.c \
-    src/core/lib/support/string.c \
-    src/core/lib/support/string_posix.c \
-    src/core/lib/support/string_util_windows.c \
-    src/core/lib/support/string_windows.c \
-    src/core/lib/support/subprocess_posix.c \
-    src/core/lib/support/subprocess_windows.c \
-    src/core/lib/support/sync.c \
-    src/core/lib/support/sync_posix.c \
-    src/core/lib/support/sync_windows.c \
-    src/core/lib/support/thd.c \
-    src/core/lib/support/thd_posix.c \
-    src/core/lib/support/thd_windows.c \
-    src/core/lib/support/time.c \
-    src/core/lib/support/time_posix.c \
-    src/core/lib/support/time_precise.c \
-    src/core/lib/support/time_windows.c \
-    src/core/lib/support/tls_pthread.c \
-    src/core/lib/support/tmpfile_msys.c \
-    src/core/lib/support/tmpfile_posix.c \
-    src/core/lib/support/tmpfile_windows.c \
-    src/core/lib/support/wrap_memcpy.c \
+    src/core/lib/profiling/basic_timers.cc \
+    src/core/lib/profiling/stap_timers.cc \
+    src/core/lib/support/alloc.cc \
+    src/core/lib/support/arena.cc \
+    src/core/lib/support/atm.cc \
+    src/core/lib/support/avl.cc \
+    src/core/lib/support/backoff.cc \
+    src/core/lib/support/cmdline.cc \
+    src/core/lib/support/cpu_iphone.cc \
+    src/core/lib/support/cpu_linux.cc \
+    src/core/lib/support/cpu_posix.cc \
+    src/core/lib/support/cpu_windows.cc \
+    src/core/lib/support/env_linux.cc \
+    src/core/lib/support/env_posix.cc \
+    src/core/lib/support/env_windows.cc \
+    src/core/lib/support/histogram.cc \
+    src/core/lib/support/host_port.cc \
+    src/core/lib/support/log.cc \
+    src/core/lib/support/log_android.cc \
+    src/core/lib/support/log_linux.cc \
+    src/core/lib/support/log_posix.cc \
+    src/core/lib/support/log_windows.cc \
+    src/core/lib/support/mpscq.cc \
+    src/core/lib/support/murmur_hash.cc \
+    src/core/lib/support/stack_lockfree.cc \
+    src/core/lib/support/string.cc \
+    src/core/lib/support/string_posix.cc \
+    src/core/lib/support/string_util_windows.cc \
+    src/core/lib/support/string_windows.cc \
+    src/core/lib/support/subprocess_posix.cc \
+    src/core/lib/support/subprocess_windows.cc \
+    src/core/lib/support/sync.cc \
+    src/core/lib/support/sync_posix.cc \
+    src/core/lib/support/sync_windows.cc \
+    src/core/lib/support/thd.cc \
+    src/core/lib/support/thd_posix.cc \
+    src/core/lib/support/thd_windows.cc \
+    src/core/lib/support/time.cc \
+    src/core/lib/support/time_posix.cc \
+    src/core/lib/support/time_precise.cc \
+    src/core/lib/support/time_windows.cc \
+    src/core/lib/support/tls_pthread.cc \
+    src/core/lib/support/tmpfile_msys.cc \
+    src/core/lib/support/tmpfile_posix.cc \
+    src/core/lib/support/tmpfile_windows.cc \
+    src/core/lib/support/wrap_memcpy.cc \
 
 PUBLIC_HEADERS_C += \
     include/grpc/support/alloc.h \
@@ -2945,267 +2945,267 @@
 
 
 LIBGRPC_SRC = \
-    src/core/lib/surface/init.c \
-    src/core/lib/channel/channel_args.c \
-    src/core/lib/channel/channel_stack.c \
-    src/core/lib/channel/channel_stack_builder.c \
-    src/core/lib/channel/connected_channel.c \
-    src/core/lib/channel/handshaker.c \
-    src/core/lib/channel/handshaker_factory.c \
-    src/core/lib/channel/handshaker_registry.c \
-    src/core/lib/compression/compression.c \
-    src/core/lib/compression/message_compress.c \
-    src/core/lib/compression/stream_compression.c \
-    src/core/lib/compression/stream_compression_gzip.c \
-    src/core/lib/compression/stream_compression_identity.c \
-    src/core/lib/debug/stats.c \
-    src/core/lib/debug/stats_data.c \
-    src/core/lib/http/format_request.c \
-    src/core/lib/http/httpcli.c \
-    src/core/lib/http/parser.c \
-    src/core/lib/iomgr/call_combiner.c \
-    src/core/lib/iomgr/closure.c \
-    src/core/lib/iomgr/combiner.c \
-    src/core/lib/iomgr/endpoint.c \
-    src/core/lib/iomgr/endpoint_pair_posix.c \
-    src/core/lib/iomgr/endpoint_pair_uv.c \
-    src/core/lib/iomgr/endpoint_pair_windows.c \
-    src/core/lib/iomgr/error.c \
-    src/core/lib/iomgr/ev_epoll1_linux.c \
-    src/core/lib/iomgr/ev_epollex_linux.c \
-    src/core/lib/iomgr/ev_epollsig_linux.c \
-    src/core/lib/iomgr/ev_poll_posix.c \
-    src/core/lib/iomgr/ev_posix.c \
-    src/core/lib/iomgr/ev_windows.c \
-    src/core/lib/iomgr/exec_ctx.c \
-    src/core/lib/iomgr/executor.c \
-    src/core/lib/iomgr/gethostname_fallback.c \
-    src/core/lib/iomgr/gethostname_host_name_max.c \
-    src/core/lib/iomgr/gethostname_sysconf.c \
-    src/core/lib/iomgr/iocp_windows.c \
-    src/core/lib/iomgr/iomgr.c \
-    src/core/lib/iomgr/iomgr_posix.c \
-    src/core/lib/iomgr/iomgr_uv.c \
-    src/core/lib/iomgr/iomgr_windows.c \
-    src/core/lib/iomgr/is_epollexclusive_available.c \
-    src/core/lib/iomgr/load_file.c \
-    src/core/lib/iomgr/lockfree_event.c \
-    src/core/lib/iomgr/network_status_tracker.c \
-    src/core/lib/iomgr/polling_entity.c \
-    src/core/lib/iomgr/pollset_set_uv.c \
-    src/core/lib/iomgr/pollset_set_windows.c \
-    src/core/lib/iomgr/pollset_uv.c \
-    src/core/lib/iomgr/pollset_windows.c \
-    src/core/lib/iomgr/resolve_address_posix.c \
-    src/core/lib/iomgr/resolve_address_uv.c \
-    src/core/lib/iomgr/resolve_address_windows.c \
-    src/core/lib/iomgr/resource_quota.c \
-    src/core/lib/iomgr/sockaddr_utils.c \
-    src/core/lib/iomgr/socket_factory_posix.c \
-    src/core/lib/iomgr/socket_mutator.c \
-    src/core/lib/iomgr/socket_utils_common_posix.c \
-    src/core/lib/iomgr/socket_utils_linux.c \
-    src/core/lib/iomgr/socket_utils_posix.c \
-    src/core/lib/iomgr/socket_utils_uv.c \
-    src/core/lib/iomgr/socket_utils_windows.c \
-    src/core/lib/iomgr/socket_windows.c \
-    src/core/lib/iomgr/tcp_client_posix.c \
-    src/core/lib/iomgr/tcp_client_uv.c \
-    src/core/lib/iomgr/tcp_client_windows.c \
-    src/core/lib/iomgr/tcp_posix.c \
-    src/core/lib/iomgr/tcp_server_posix.c \
-    src/core/lib/iomgr/tcp_server_utils_posix_common.c \
-    src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c \
-    src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c \
-    src/core/lib/iomgr/tcp_server_uv.c \
-    src/core/lib/iomgr/tcp_server_windows.c \
-    src/core/lib/iomgr/tcp_uv.c \
-    src/core/lib/iomgr/tcp_windows.c \
-    src/core/lib/iomgr/time_averaged_stats.c \
-    src/core/lib/iomgr/timer_generic.c \
-    src/core/lib/iomgr/timer_heap.c \
-    src/core/lib/iomgr/timer_manager.c \
-    src/core/lib/iomgr/timer_uv.c \
-    src/core/lib/iomgr/udp_server.c \
-    src/core/lib/iomgr/unix_sockets_posix.c \
-    src/core/lib/iomgr/unix_sockets_posix_noop.c \
-    src/core/lib/iomgr/wakeup_fd_cv.c \
-    src/core/lib/iomgr/wakeup_fd_eventfd.c \
-    src/core/lib/iomgr/wakeup_fd_nospecial.c \
-    src/core/lib/iomgr/wakeup_fd_pipe.c \
-    src/core/lib/iomgr/wakeup_fd_posix.c \
-    src/core/lib/json/json.c \
-    src/core/lib/json/json_reader.c \
-    src/core/lib/json/json_string.c \
-    src/core/lib/json/json_writer.c \
-    src/core/lib/slice/b64.c \
-    src/core/lib/slice/percent_encoding.c \
-    src/core/lib/slice/slice.c \
-    src/core/lib/slice/slice_buffer.c \
-    src/core/lib/slice/slice_hash_table.c \
-    src/core/lib/slice/slice_intern.c \
-    src/core/lib/slice/slice_string_helpers.c \
-    src/core/lib/surface/alarm.c \
-    src/core/lib/surface/api_trace.c \
-    src/core/lib/surface/byte_buffer.c \
-    src/core/lib/surface/byte_buffer_reader.c \
-    src/core/lib/surface/call.c \
-    src/core/lib/surface/call_details.c \
-    src/core/lib/surface/call_log_batch.c \
-    src/core/lib/surface/channel.c \
-    src/core/lib/surface/channel_init.c \
-    src/core/lib/surface/channel_ping.c \
-    src/core/lib/surface/channel_stack_type.c \
-    src/core/lib/surface/completion_queue.c \
-    src/core/lib/surface/completion_queue_factory.c \
-    src/core/lib/surface/event_string.c \
+    src/core/lib/surface/init.cc \
+    src/core/lib/channel/channel_args.cc \
+    src/core/lib/channel/channel_stack.cc \
+    src/core/lib/channel/channel_stack_builder.cc \
+    src/core/lib/channel/connected_channel.cc \
+    src/core/lib/channel/handshaker.cc \
+    src/core/lib/channel/handshaker_factory.cc \
+    src/core/lib/channel/handshaker_registry.cc \
+    src/core/lib/compression/compression.cc \
+    src/core/lib/compression/message_compress.cc \
+    src/core/lib/compression/stream_compression.cc \
+    src/core/lib/compression/stream_compression_gzip.cc \
+    src/core/lib/compression/stream_compression_identity.cc \
+    src/core/lib/debug/stats.cc \
+    src/core/lib/debug/stats_data.cc \
+    src/core/lib/http/format_request.cc \
+    src/core/lib/http/httpcli.cc \
+    src/core/lib/http/parser.cc \
+    src/core/lib/iomgr/call_combiner.cc \
+    src/core/lib/iomgr/closure.cc \
+    src/core/lib/iomgr/combiner.cc \
+    src/core/lib/iomgr/endpoint.cc \
+    src/core/lib/iomgr/endpoint_pair_posix.cc \
+    src/core/lib/iomgr/endpoint_pair_uv.cc \
+    src/core/lib/iomgr/endpoint_pair_windows.cc \
+    src/core/lib/iomgr/error.cc \
+    src/core/lib/iomgr/ev_epoll1_linux.cc \
+    src/core/lib/iomgr/ev_epollex_linux.cc \
+    src/core/lib/iomgr/ev_epollsig_linux.cc \
+    src/core/lib/iomgr/ev_poll_posix.cc \
+    src/core/lib/iomgr/ev_posix.cc \
+    src/core/lib/iomgr/ev_windows.cc \
+    src/core/lib/iomgr/exec_ctx.cc \
+    src/core/lib/iomgr/executor.cc \
+    src/core/lib/iomgr/gethostname_fallback.cc \
+    src/core/lib/iomgr/gethostname_host_name_max.cc \
+    src/core/lib/iomgr/gethostname_sysconf.cc \
+    src/core/lib/iomgr/iocp_windows.cc \
+    src/core/lib/iomgr/iomgr.cc \
+    src/core/lib/iomgr/iomgr_posix.cc \
+    src/core/lib/iomgr/iomgr_uv.cc \
+    src/core/lib/iomgr/iomgr_windows.cc \
+    src/core/lib/iomgr/is_epollexclusive_available.cc \
+    src/core/lib/iomgr/load_file.cc \
+    src/core/lib/iomgr/lockfree_event.cc \
+    src/core/lib/iomgr/network_status_tracker.cc \
+    src/core/lib/iomgr/polling_entity.cc \
+    src/core/lib/iomgr/pollset_set_uv.cc \
+    src/core/lib/iomgr/pollset_set_windows.cc \
+    src/core/lib/iomgr/pollset_uv.cc \
+    src/core/lib/iomgr/pollset_windows.cc \
+    src/core/lib/iomgr/resolve_address_posix.cc \
+    src/core/lib/iomgr/resolve_address_uv.cc \
+    src/core/lib/iomgr/resolve_address_windows.cc \
+    src/core/lib/iomgr/resource_quota.cc \
+    src/core/lib/iomgr/sockaddr_utils.cc \
+    src/core/lib/iomgr/socket_factory_posix.cc \
+    src/core/lib/iomgr/socket_mutator.cc \
+    src/core/lib/iomgr/socket_utils_common_posix.cc \
+    src/core/lib/iomgr/socket_utils_linux.cc \
+    src/core/lib/iomgr/socket_utils_posix.cc \
+    src/core/lib/iomgr/socket_utils_uv.cc \
+    src/core/lib/iomgr/socket_utils_windows.cc \
+    src/core/lib/iomgr/socket_windows.cc \
+    src/core/lib/iomgr/tcp_client_posix.cc \
+    src/core/lib/iomgr/tcp_client_uv.cc \
+    src/core/lib/iomgr/tcp_client_windows.cc \
+    src/core/lib/iomgr/tcp_posix.cc \
+    src/core/lib/iomgr/tcp_server_posix.cc \
+    src/core/lib/iomgr/tcp_server_utils_posix_common.cc \
+    src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc \
+    src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc \
+    src/core/lib/iomgr/tcp_server_uv.cc \
+    src/core/lib/iomgr/tcp_server_windows.cc \
+    src/core/lib/iomgr/tcp_uv.cc \
+    src/core/lib/iomgr/tcp_windows.cc \
+    src/core/lib/iomgr/time_averaged_stats.cc \
+    src/core/lib/iomgr/timer_generic.cc \
+    src/core/lib/iomgr/timer_heap.cc \
+    src/core/lib/iomgr/timer_manager.cc \
+    src/core/lib/iomgr/timer_uv.cc \
+    src/core/lib/iomgr/udp_server.cc \
+    src/core/lib/iomgr/unix_sockets_posix.cc \
+    src/core/lib/iomgr/unix_sockets_posix_noop.cc \
+    src/core/lib/iomgr/wakeup_fd_cv.cc \
+    src/core/lib/iomgr/wakeup_fd_eventfd.cc \
+    src/core/lib/iomgr/wakeup_fd_nospecial.cc \
+    src/core/lib/iomgr/wakeup_fd_pipe.cc \
+    src/core/lib/iomgr/wakeup_fd_posix.cc \
+    src/core/lib/json/json.cc \
+    src/core/lib/json/json_reader.cc \
+    src/core/lib/json/json_string.cc \
+    src/core/lib/json/json_writer.cc \
+    src/core/lib/slice/b64.cc \
+    src/core/lib/slice/percent_encoding.cc \
+    src/core/lib/slice/slice.cc \
+    src/core/lib/slice/slice_buffer.cc \
+    src/core/lib/slice/slice_hash_table.cc \
+    src/core/lib/slice/slice_intern.cc \
+    src/core/lib/slice/slice_string_helpers.cc \
+    src/core/lib/surface/alarm.cc \
+    src/core/lib/surface/api_trace.cc \
+    src/core/lib/surface/byte_buffer.cc \
+    src/core/lib/surface/byte_buffer_reader.cc \
+    src/core/lib/surface/call.cc \
+    src/core/lib/surface/call_details.cc \
+    src/core/lib/surface/call_log_batch.cc \
+    src/core/lib/surface/channel.cc \
+    src/core/lib/surface/channel_init.cc \
+    src/core/lib/surface/channel_ping.cc \
+    src/core/lib/surface/channel_stack_type.cc \
+    src/core/lib/surface/completion_queue.cc \
+    src/core/lib/surface/completion_queue_factory.cc \
+    src/core/lib/surface/event_string.cc \
     src/core/lib/surface/lame_client.cc \
-    src/core/lib/surface/metadata_array.c \
-    src/core/lib/surface/server.c \
-    src/core/lib/surface/validate_metadata.c \
-    src/core/lib/surface/version.c \
-    src/core/lib/transport/bdp_estimator.c \
-    src/core/lib/transport/byte_stream.c \
-    src/core/lib/transport/connectivity_state.c \
-    src/core/lib/transport/error_utils.c \
-    src/core/lib/transport/metadata.c \
-    src/core/lib/transport/metadata_batch.c \
-    src/core/lib/transport/pid_controller.c \
-    src/core/lib/transport/service_config.c \
-    src/core/lib/transport/static_metadata.c \
-    src/core/lib/transport/status_conversion.c \
-    src/core/lib/transport/timeout_encoding.c \
-    src/core/lib/transport/transport.c \
-    src/core/lib/transport/transport_op_string.c \
-    src/core/lib/debug/trace.c \
-    src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c \
-    src/core/ext/transport/chttp2/transport/bin_decoder.c \
-    src/core/ext/transport/chttp2/transport/bin_encoder.c \
-    src/core/ext/transport/chttp2/transport/chttp2_plugin.c \
-    src/core/ext/transport/chttp2/transport/chttp2_transport.c \
-    src/core/ext/transport/chttp2/transport/flow_control.c \
-    src/core/ext/transport/chttp2/transport/frame_data.c \
-    src/core/ext/transport/chttp2/transport/frame_goaway.c \
-    src/core/ext/transport/chttp2/transport/frame_ping.c \
-    src/core/ext/transport/chttp2/transport/frame_rst_stream.c \
-    src/core/ext/transport/chttp2/transport/frame_settings.c \
-    src/core/ext/transport/chttp2/transport/frame_window_update.c \
-    src/core/ext/transport/chttp2/transport/hpack_encoder.c \
-    src/core/ext/transport/chttp2/transport/hpack_parser.c \
-    src/core/ext/transport/chttp2/transport/hpack_table.c \
-    src/core/ext/transport/chttp2/transport/http2_settings.c \
-    src/core/ext/transport/chttp2/transport/huffsyms.c \
-    src/core/ext/transport/chttp2/transport/incoming_metadata.c \
-    src/core/ext/transport/chttp2/transport/parsing.c \
-    src/core/ext/transport/chttp2/transport/stream_lists.c \
-    src/core/ext/transport/chttp2/transport/stream_map.c \
-    src/core/ext/transport/chttp2/transport/varint.c \
-    src/core/ext/transport/chttp2/transport/writing.c \
-    src/core/ext/transport/chttp2/alpn/alpn.c \
-    src/core/ext/filters/http/client/http_client_filter.c \
-    src/core/ext/filters/http/http_filters_plugin.c \
-    src/core/ext/filters/http/message_compress/message_compress_filter.c \
-    src/core/ext/filters/http/server/http_server_filter.c \
-    src/core/lib/http/httpcli_security_connector.c \
-    src/core/lib/security/context/security_context.c \
-    src/core/lib/security/credentials/composite/composite_credentials.c \
-    src/core/lib/security/credentials/credentials.c \
-    src/core/lib/security/credentials/credentials_metadata.c \
-    src/core/lib/security/credentials/fake/fake_credentials.c \
-    src/core/lib/security/credentials/google_default/credentials_generic.c \
-    src/core/lib/security/credentials/google_default/google_default_credentials.c \
-    src/core/lib/security/credentials/iam/iam_credentials.c \
-    src/core/lib/security/credentials/jwt/json_token.c \
-    src/core/lib/security/credentials/jwt/jwt_credentials.c \
-    src/core/lib/security/credentials/jwt/jwt_verifier.c \
-    src/core/lib/security/credentials/oauth2/oauth2_credentials.c \
-    src/core/lib/security/credentials/plugin/plugin_credentials.c \
-    src/core/lib/security/credentials/ssl/ssl_credentials.c \
-    src/core/lib/security/transport/client_auth_filter.c \
-    src/core/lib/security/transport/lb_targets_info.c \
-    src/core/lib/security/transport/secure_endpoint.c \
-    src/core/lib/security/transport/security_connector.c \
-    src/core/lib/security/transport/security_handshaker.c \
-    src/core/lib/security/transport/server_auth_filter.c \
-    src/core/lib/security/transport/tsi_error.c \
-    src/core/lib/security/util/json_util.c \
-    src/core/lib/surface/init_secure.c \
-    src/core/tsi/fake_transport_security.c \
-    src/core/tsi/gts_transport_security.c \
-    src/core/tsi/ssl_transport_security.c \
-    src/core/tsi/transport_security_grpc.c \
-    src/core/tsi/transport_security.c \
-    src/core/tsi/transport_security_adapter.c \
-    src/core/ext/transport/chttp2/server/chttp2_server.c \
-    src/core/ext/transport/chttp2/client/secure/secure_channel_create.c \
-    src/core/ext/filters/client_channel/channel_connectivity.c \
-    src/core/ext/filters/client_channel/client_channel.c \
-    src/core/ext/filters/client_channel/client_channel_factory.c \
-    src/core/ext/filters/client_channel/client_channel_plugin.c \
-    src/core/ext/filters/client_channel/connector.c \
-    src/core/ext/filters/client_channel/http_connect_handshaker.c \
-    src/core/ext/filters/client_channel/http_proxy.c \
-    src/core/ext/filters/client_channel/lb_policy.c \
-    src/core/ext/filters/client_channel/lb_policy_factory.c \
-    src/core/ext/filters/client_channel/lb_policy_registry.c \
-    src/core/ext/filters/client_channel/parse_address.c \
-    src/core/ext/filters/client_channel/proxy_mapper.c \
-    src/core/ext/filters/client_channel/proxy_mapper_registry.c \
-    src/core/ext/filters/client_channel/resolver.c \
-    src/core/ext/filters/client_channel/resolver_factory.c \
-    src/core/ext/filters/client_channel/resolver_registry.c \
-    src/core/ext/filters/client_channel/retry_throttle.c \
-    src/core/ext/filters/client_channel/subchannel.c \
-    src/core/ext/filters/client_channel/subchannel_index.c \
-    src/core/ext/filters/client_channel/uri_parser.c \
-    src/core/ext/filters/deadline/deadline_filter.c \
-    src/core/ext/transport/chttp2/client/chttp2_connector.c \
-    src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
-    src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c \
-    src/core/ext/transport/chttp2/client/insecure/channel_create.c \
-    src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c \
-    src/core/ext/transport/inproc/inproc_plugin.c \
-    src/core/ext/transport/inproc/inproc_transport.c \
-    src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c \
-    src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c \
-    src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c \
-    src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c \
-    src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c \
+    src/core/lib/surface/metadata_array.cc \
+    src/core/lib/surface/server.cc \
+    src/core/lib/surface/validate_metadata.cc \
+    src/core/lib/surface/version.cc \
+    src/core/lib/transport/bdp_estimator.cc \
+    src/core/lib/transport/byte_stream.cc \
+    src/core/lib/transport/connectivity_state.cc \
+    src/core/lib/transport/error_utils.cc \
+    src/core/lib/transport/metadata.cc \
+    src/core/lib/transport/metadata_batch.cc \
+    src/core/lib/transport/pid_controller.cc \
+    src/core/lib/transport/service_config.cc \
+    src/core/lib/transport/static_metadata.cc \
+    src/core/lib/transport/status_conversion.cc \
+    src/core/lib/transport/timeout_encoding.cc \
+    src/core/lib/transport/transport.cc \
+    src/core/lib/transport/transport_op_string.cc \
+    src/core/lib/debug/trace.cc \
+    src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc \
+    src/core/ext/transport/chttp2/transport/bin_decoder.cc \
+    src/core/ext/transport/chttp2/transport/bin_encoder.cc \
+    src/core/ext/transport/chttp2/transport/chttp2_plugin.cc \
+    src/core/ext/transport/chttp2/transport/chttp2_transport.cc \
+    src/core/ext/transport/chttp2/transport/flow_control.cc \
+    src/core/ext/transport/chttp2/transport/frame_data.cc \
+    src/core/ext/transport/chttp2/transport/frame_goaway.cc \
+    src/core/ext/transport/chttp2/transport/frame_ping.cc \
+    src/core/ext/transport/chttp2/transport/frame_rst_stream.cc \
+    src/core/ext/transport/chttp2/transport/frame_settings.cc \
+    src/core/ext/transport/chttp2/transport/frame_window_update.cc \
+    src/core/ext/transport/chttp2/transport/hpack_encoder.cc \
+    src/core/ext/transport/chttp2/transport/hpack_parser.cc \
+    src/core/ext/transport/chttp2/transport/hpack_table.cc \
+    src/core/ext/transport/chttp2/transport/http2_settings.cc \
+    src/core/ext/transport/chttp2/transport/huffsyms.cc \
+    src/core/ext/transport/chttp2/transport/incoming_metadata.cc \
+    src/core/ext/transport/chttp2/transport/parsing.cc \
+    src/core/ext/transport/chttp2/transport/stream_lists.cc \
+    src/core/ext/transport/chttp2/transport/stream_map.cc \
+    src/core/ext/transport/chttp2/transport/varint.cc \
+    src/core/ext/transport/chttp2/transport/writing.cc \
+    src/core/ext/transport/chttp2/alpn/alpn.cc \
+    src/core/ext/filters/http/client/http_client_filter.cc \
+    src/core/ext/filters/http/http_filters_plugin.cc \
+    src/core/ext/filters/http/message_compress/message_compress_filter.cc \
+    src/core/ext/filters/http/server/http_server_filter.cc \
+    src/core/lib/http/httpcli_security_connector.cc \
+    src/core/lib/security/context/security_context.cc \
+    src/core/lib/security/credentials/composite/composite_credentials.cc \
+    src/core/lib/security/credentials/credentials.cc \
+    src/core/lib/security/credentials/credentials_metadata.cc \
+    src/core/lib/security/credentials/fake/fake_credentials.cc \
+    src/core/lib/security/credentials/google_default/credentials_generic.cc \
+    src/core/lib/security/credentials/google_default/google_default_credentials.cc \
+    src/core/lib/security/credentials/iam/iam_credentials.cc \
+    src/core/lib/security/credentials/jwt/json_token.cc \
+    src/core/lib/security/credentials/jwt/jwt_credentials.cc \
+    src/core/lib/security/credentials/jwt/jwt_verifier.cc \
+    src/core/lib/security/credentials/oauth2/oauth2_credentials.cc \
+    src/core/lib/security/credentials/plugin/plugin_credentials.cc \
+    src/core/lib/security/credentials/ssl/ssl_credentials.cc \
+    src/core/lib/security/transport/client_auth_filter.cc \
+    src/core/lib/security/transport/lb_targets_info.cc \
+    src/core/lib/security/transport/secure_endpoint.cc \
+    src/core/lib/security/transport/security_connector.cc \
+    src/core/lib/security/transport/security_handshaker.cc \
+    src/core/lib/security/transport/server_auth_filter.cc \
+    src/core/lib/security/transport/tsi_error.cc \
+    src/core/lib/security/util/json_util.cc \
+    src/core/lib/surface/init_secure.cc \
+    src/core/tsi/fake_transport_security.cc \
+    src/core/tsi/gts_transport_security.cc \
+    src/core/tsi/ssl_transport_security.cc \
+    src/core/tsi/transport_security_grpc.cc \
+    src/core/tsi/transport_security.cc \
+    src/core/tsi/transport_security_adapter.cc \
+    src/core/ext/transport/chttp2/server/chttp2_server.cc \
+    src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc \
+    src/core/ext/filters/client_channel/channel_connectivity.cc \
+    src/core/ext/filters/client_channel/client_channel.cc \
+    src/core/ext/filters/client_channel/client_channel_factory.cc \
+    src/core/ext/filters/client_channel/client_channel_plugin.cc \
+    src/core/ext/filters/client_channel/connector.cc \
+    src/core/ext/filters/client_channel/http_connect_handshaker.cc \
+    src/core/ext/filters/client_channel/http_proxy.cc \
+    src/core/ext/filters/client_channel/lb_policy.cc \
+    src/core/ext/filters/client_channel/lb_policy_factory.cc \
+    src/core/ext/filters/client_channel/lb_policy_registry.cc \
+    src/core/ext/filters/client_channel/parse_address.cc \
+    src/core/ext/filters/client_channel/proxy_mapper.cc \
+    src/core/ext/filters/client_channel/proxy_mapper_registry.cc \
+    src/core/ext/filters/client_channel/resolver.cc \
+    src/core/ext/filters/client_channel/resolver_factory.cc \
+    src/core/ext/filters/client_channel/resolver_registry.cc \
+    src/core/ext/filters/client_channel/retry_throttle.cc \
+    src/core/ext/filters/client_channel/subchannel.cc \
+    src/core/ext/filters/client_channel/subchannel_index.cc \
+    src/core/ext/filters/client_channel/uri_parser.cc \
+    src/core/ext/filters/deadline/deadline_filter.cc \
+    src/core/ext/transport/chttp2/client/chttp2_connector.cc \
+    src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc \
+    src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc \
+    src/core/ext/transport/chttp2/client/insecure/channel_create.cc \
+    src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc \
+    src/core/ext/transport/inproc/inproc_plugin.cc \
+    src/core/ext/transport/inproc/inproc_transport.cc \
+    src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc \
+    src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc \
+    src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc \
+    src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc \
+    src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc \
     src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c \
     third_party/nanopb/pb_common.c \
     third_party/nanopb/pb_decode.c \
     third_party/nanopb/pb_encode.c \
-    src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c \
-    src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c \
-    src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c \
-    src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c \
-    src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c \
-    src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c \
-    src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c \
-    src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c \
-    src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c \
-    src/core/ext/filters/load_reporting/server_load_reporting_filter.c \
-    src/core/ext/filters/load_reporting/server_load_reporting_plugin.c \
-    src/core/ext/census/base_resources.c \
-    src/core/ext/census/context.c \
+    src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc \
+    src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc \
+    src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc \
+    src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc \
+    src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc \
+    src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc \
+    src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc \
+    src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc \
+    src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc \
+    src/core/ext/filters/load_reporting/server_load_reporting_filter.cc \
+    src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc \
+    src/core/ext/census/base_resources.cc \
+    src/core/ext/census/context.cc \
     src/core/ext/census/gen/census.pb.c \
     src/core/ext/census/gen/trace_context.pb.c \
-    src/core/ext/census/grpc_context.c \
-    src/core/ext/census/grpc_filter.c \
-    src/core/ext/census/grpc_plugin.c \
-    src/core/ext/census/initialize.c \
-    src/core/ext/census/intrusive_hash_map.c \
-    src/core/ext/census/mlog.c \
-    src/core/ext/census/operation.c \
-    src/core/ext/census/placeholders.c \
-    src/core/ext/census/resource.c \
-    src/core/ext/census/trace_context.c \
-    src/core/ext/census/tracing.c \
-    src/core/ext/filters/max_age/max_age_filter.c \
-    src/core/ext/filters/message_size/message_size_filter.c \
-    src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c \
-    src/core/ext/filters/workarounds/workaround_utils.c \
-    src/core/plugin_registry/grpc_plugin_registry.c \
+    src/core/ext/census/grpc_context.cc \
+    src/core/ext/census/grpc_filter.cc \
+    src/core/ext/census/grpc_plugin.cc \
+    src/core/ext/census/initialize.cc \
+    src/core/ext/census/intrusive_hash_map.cc \
+    src/core/ext/census/mlog.cc \
+    src/core/ext/census/operation.cc \
+    src/core/ext/census/placeholders.cc \
+    src/core/ext/census/resource.cc \
+    src/core/ext/census/trace_context.cc \
+    src/core/ext/census/tracing.cc \
+    src/core/ext/filters/max_age/max_age_filter.cc \
+    src/core/ext/filters/message_size/message_size_filter.cc \
+    src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc \
+    src/core/ext/filters/workarounds/workaround_utils.cc \
+    src/core/plugin_registry/grpc_plugin_registry.cc \
 
 PUBLIC_HEADERS_C += \
     include/grpc/impl/codegen/byte_buffer.h \
@@ -3296,225 +3296,225 @@
 
 
 LIBGRPC_CRONET_SRC = \
-    src/core/lib/surface/init.c \
-    src/core/lib/channel/channel_args.c \
-    src/core/lib/channel/channel_stack.c \
-    src/core/lib/channel/channel_stack_builder.c \
-    src/core/lib/channel/connected_channel.c \
-    src/core/lib/channel/handshaker.c \
-    src/core/lib/channel/handshaker_factory.c \
-    src/core/lib/channel/handshaker_registry.c \
-    src/core/lib/compression/compression.c \
-    src/core/lib/compression/message_compress.c \
-    src/core/lib/compression/stream_compression.c \
-    src/core/lib/compression/stream_compression_gzip.c \
-    src/core/lib/compression/stream_compression_identity.c \
-    src/core/lib/debug/stats.c \
-    src/core/lib/debug/stats_data.c \
-    src/core/lib/http/format_request.c \
-    src/core/lib/http/httpcli.c \
-    src/core/lib/http/parser.c \
-    src/core/lib/iomgr/call_combiner.c \
-    src/core/lib/iomgr/closure.c \
-    src/core/lib/iomgr/combiner.c \
-    src/core/lib/iomgr/endpoint.c \
-    src/core/lib/iomgr/endpoint_pair_posix.c \
-    src/core/lib/iomgr/endpoint_pair_uv.c \
-    src/core/lib/iomgr/endpoint_pair_windows.c \
-    src/core/lib/iomgr/error.c \
-    src/core/lib/iomgr/ev_epoll1_linux.c \
-    src/core/lib/iomgr/ev_epollex_linux.c \
-    src/core/lib/iomgr/ev_epollsig_linux.c \
-    src/core/lib/iomgr/ev_poll_posix.c \
-    src/core/lib/iomgr/ev_posix.c \
-    src/core/lib/iomgr/ev_windows.c \
-    src/core/lib/iomgr/exec_ctx.c \
-    src/core/lib/iomgr/executor.c \
-    src/core/lib/iomgr/gethostname_fallback.c \
-    src/core/lib/iomgr/gethostname_host_name_max.c \
-    src/core/lib/iomgr/gethostname_sysconf.c \
-    src/core/lib/iomgr/iocp_windows.c \
-    src/core/lib/iomgr/iomgr.c \
-    src/core/lib/iomgr/iomgr_posix.c \
-    src/core/lib/iomgr/iomgr_uv.c \
-    src/core/lib/iomgr/iomgr_windows.c \
-    src/core/lib/iomgr/is_epollexclusive_available.c \
-    src/core/lib/iomgr/load_file.c \
-    src/core/lib/iomgr/lockfree_event.c \
-    src/core/lib/iomgr/network_status_tracker.c \
-    src/core/lib/iomgr/polling_entity.c \
-    src/core/lib/iomgr/pollset_set_uv.c \
-    src/core/lib/iomgr/pollset_set_windows.c \
-    src/core/lib/iomgr/pollset_uv.c \
-    src/core/lib/iomgr/pollset_windows.c \
-    src/core/lib/iomgr/resolve_address_posix.c \
-    src/core/lib/iomgr/resolve_address_uv.c \
-    src/core/lib/iomgr/resolve_address_windows.c \
-    src/core/lib/iomgr/resource_quota.c \
-    src/core/lib/iomgr/sockaddr_utils.c \
-    src/core/lib/iomgr/socket_factory_posix.c \
-    src/core/lib/iomgr/socket_mutator.c \
-    src/core/lib/iomgr/socket_utils_common_posix.c \
-    src/core/lib/iomgr/socket_utils_linux.c \
-    src/core/lib/iomgr/socket_utils_posix.c \
-    src/core/lib/iomgr/socket_utils_uv.c \
-    src/core/lib/iomgr/socket_utils_windows.c \
-    src/core/lib/iomgr/socket_windows.c \
-    src/core/lib/iomgr/tcp_client_posix.c \
-    src/core/lib/iomgr/tcp_client_uv.c \
-    src/core/lib/iomgr/tcp_client_windows.c \
-    src/core/lib/iomgr/tcp_posix.c \
-    src/core/lib/iomgr/tcp_server_posix.c \
-    src/core/lib/iomgr/tcp_server_utils_posix_common.c \
-    src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c \
-    src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c \
-    src/core/lib/iomgr/tcp_server_uv.c \
-    src/core/lib/iomgr/tcp_server_windows.c \
-    src/core/lib/iomgr/tcp_uv.c \
-    src/core/lib/iomgr/tcp_windows.c \
-    src/core/lib/iomgr/time_averaged_stats.c \
-    src/core/lib/iomgr/timer_generic.c \
-    src/core/lib/iomgr/timer_heap.c \
-    src/core/lib/iomgr/timer_manager.c \
-    src/core/lib/iomgr/timer_uv.c \
-    src/core/lib/iomgr/udp_server.c \
-    src/core/lib/iomgr/unix_sockets_posix.c \
-    src/core/lib/iomgr/unix_sockets_posix_noop.c \
-    src/core/lib/iomgr/wakeup_fd_cv.c \
-    src/core/lib/iomgr/wakeup_fd_eventfd.c \
-    src/core/lib/iomgr/wakeup_fd_nospecial.c \
-    src/core/lib/iomgr/wakeup_fd_pipe.c \
-    src/core/lib/iomgr/wakeup_fd_posix.c \
-    src/core/lib/json/json.c \
-    src/core/lib/json/json_reader.c \
-    src/core/lib/json/json_string.c \
-    src/core/lib/json/json_writer.c \
-    src/core/lib/slice/b64.c \
-    src/core/lib/slice/percent_encoding.c \
-    src/core/lib/slice/slice.c \
-    src/core/lib/slice/slice_buffer.c \
-    src/core/lib/slice/slice_hash_table.c \
-    src/core/lib/slice/slice_intern.c \
-    src/core/lib/slice/slice_string_helpers.c \
-    src/core/lib/surface/alarm.c \
-    src/core/lib/surface/api_trace.c \
-    src/core/lib/surface/byte_buffer.c \
-    src/core/lib/surface/byte_buffer_reader.c \
-    src/core/lib/surface/call.c \
-    src/core/lib/surface/call_details.c \
-    src/core/lib/surface/call_log_batch.c \
-    src/core/lib/surface/channel.c \
-    src/core/lib/surface/channel_init.c \
-    src/core/lib/surface/channel_ping.c \
-    src/core/lib/surface/channel_stack_type.c \
-    src/core/lib/surface/completion_queue.c \
-    src/core/lib/surface/completion_queue_factory.c \
-    src/core/lib/surface/event_string.c \
+    src/core/lib/surface/init.cc \
+    src/core/lib/channel/channel_args.cc \
+    src/core/lib/channel/channel_stack.cc \
+    src/core/lib/channel/channel_stack_builder.cc \
+    src/core/lib/channel/connected_channel.cc \
+    src/core/lib/channel/handshaker.cc \
+    src/core/lib/channel/handshaker_factory.cc \
+    src/core/lib/channel/handshaker_registry.cc \
+    src/core/lib/compression/compression.cc \
+    src/core/lib/compression/message_compress.cc \
+    src/core/lib/compression/stream_compression.cc \
+    src/core/lib/compression/stream_compression_gzip.cc \
+    src/core/lib/compression/stream_compression_identity.cc \
+    src/core/lib/debug/stats.cc \
+    src/core/lib/debug/stats_data.cc \
+    src/core/lib/http/format_request.cc \
+    src/core/lib/http/httpcli.cc \
+    src/core/lib/http/parser.cc \
+    src/core/lib/iomgr/call_combiner.cc \
+    src/core/lib/iomgr/closure.cc \
+    src/core/lib/iomgr/combiner.cc \
+    src/core/lib/iomgr/endpoint.cc \
+    src/core/lib/iomgr/endpoint_pair_posix.cc \
+    src/core/lib/iomgr/endpoint_pair_uv.cc \
+    src/core/lib/iomgr/endpoint_pair_windows.cc \
+    src/core/lib/iomgr/error.cc \
+    src/core/lib/iomgr/ev_epoll1_linux.cc \
+    src/core/lib/iomgr/ev_epollex_linux.cc \
+    src/core/lib/iomgr/ev_epollsig_linux.cc \
+    src/core/lib/iomgr/ev_poll_posix.cc \
+    src/core/lib/iomgr/ev_posix.cc \
+    src/core/lib/iomgr/ev_windows.cc \
+    src/core/lib/iomgr/exec_ctx.cc \
+    src/core/lib/iomgr/executor.cc \
+    src/core/lib/iomgr/gethostname_fallback.cc \
+    src/core/lib/iomgr/gethostname_host_name_max.cc \
+    src/core/lib/iomgr/gethostname_sysconf.cc \
+    src/core/lib/iomgr/iocp_windows.cc \
+    src/core/lib/iomgr/iomgr.cc \
+    src/core/lib/iomgr/iomgr_posix.cc \
+    src/core/lib/iomgr/iomgr_uv.cc \
+    src/core/lib/iomgr/iomgr_windows.cc \
+    src/core/lib/iomgr/is_epollexclusive_available.cc \
+    src/core/lib/iomgr/load_file.cc \
+    src/core/lib/iomgr/lockfree_event.cc \
+    src/core/lib/iomgr/network_status_tracker.cc \
+    src/core/lib/iomgr/polling_entity.cc \
+    src/core/lib/iomgr/pollset_set_uv.cc \
+    src/core/lib/iomgr/pollset_set_windows.cc \
+    src/core/lib/iomgr/pollset_uv.cc \
+    src/core/lib/iomgr/pollset_windows.cc \
+    src/core/lib/iomgr/resolve_address_posix.cc \
+    src/core/lib/iomgr/resolve_address_uv.cc \
+    src/core/lib/iomgr/resolve_address_windows.cc \
+    src/core/lib/iomgr/resource_quota.cc \
+    src/core/lib/iomgr/sockaddr_utils.cc \
+    src/core/lib/iomgr/socket_factory_posix.cc \
+    src/core/lib/iomgr/socket_mutator.cc \
+    src/core/lib/iomgr/socket_utils_common_posix.cc \
+    src/core/lib/iomgr/socket_utils_linux.cc \
+    src/core/lib/iomgr/socket_utils_posix.cc \
+    src/core/lib/iomgr/socket_utils_uv.cc \
+    src/core/lib/iomgr/socket_utils_windows.cc \
+    src/core/lib/iomgr/socket_windows.cc \
+    src/core/lib/iomgr/tcp_client_posix.cc \
+    src/core/lib/iomgr/tcp_client_uv.cc \
+    src/core/lib/iomgr/tcp_client_windows.cc \
+    src/core/lib/iomgr/tcp_posix.cc \
+    src/core/lib/iomgr/tcp_server_posix.cc \
+    src/core/lib/iomgr/tcp_server_utils_posix_common.cc \
+    src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc \
+    src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc \
+    src/core/lib/iomgr/tcp_server_uv.cc \
+    src/core/lib/iomgr/tcp_server_windows.cc \
+    src/core/lib/iomgr/tcp_uv.cc \
+    src/core/lib/iomgr/tcp_windows.cc \
+    src/core/lib/iomgr/time_averaged_stats.cc \
+    src/core/lib/iomgr/timer_generic.cc \
+    src/core/lib/iomgr/timer_heap.cc \
+    src/core/lib/iomgr/timer_manager.cc \
+    src/core/lib/iomgr/timer_uv.cc \
+    src/core/lib/iomgr/udp_server.cc \
+    src/core/lib/iomgr/unix_sockets_posix.cc \
+    src/core/lib/iomgr/unix_sockets_posix_noop.cc \
+    src/core/lib/iomgr/wakeup_fd_cv.cc \
+    src/core/lib/iomgr/wakeup_fd_eventfd.cc \
+    src/core/lib/iomgr/wakeup_fd_nospecial.cc \
+    src/core/lib/iomgr/wakeup_fd_pipe.cc \
+    src/core/lib/iomgr/wakeup_fd_posix.cc \
+    src/core/lib/json/json.cc \
+    src/core/lib/json/json_reader.cc \
+    src/core/lib/json/json_string.cc \
+    src/core/lib/json/json_writer.cc \
+    src/core/lib/slice/b64.cc \
+    src/core/lib/slice/percent_encoding.cc \
+    src/core/lib/slice/slice.cc \
+    src/core/lib/slice/slice_buffer.cc \
+    src/core/lib/slice/slice_hash_table.cc \
+    src/core/lib/slice/slice_intern.cc \
+    src/core/lib/slice/slice_string_helpers.cc \
+    src/core/lib/surface/alarm.cc \
+    src/core/lib/surface/api_trace.cc \
+    src/core/lib/surface/byte_buffer.cc \
+    src/core/lib/surface/byte_buffer_reader.cc \
+    src/core/lib/surface/call.cc \
+    src/core/lib/surface/call_details.cc \
+    src/core/lib/surface/call_log_batch.cc \
+    src/core/lib/surface/channel.cc \
+    src/core/lib/surface/channel_init.cc \
+    src/core/lib/surface/channel_ping.cc \
+    src/core/lib/surface/channel_stack_type.cc \
+    src/core/lib/surface/completion_queue.cc \
+    src/core/lib/surface/completion_queue_factory.cc \
+    src/core/lib/surface/event_string.cc \
     src/core/lib/surface/lame_client.cc \
-    src/core/lib/surface/metadata_array.c \
-    src/core/lib/surface/server.c \
-    src/core/lib/surface/validate_metadata.c \
-    src/core/lib/surface/version.c \
-    src/core/lib/transport/bdp_estimator.c \
-    src/core/lib/transport/byte_stream.c \
-    src/core/lib/transport/connectivity_state.c \
-    src/core/lib/transport/error_utils.c \
-    src/core/lib/transport/metadata.c \
-    src/core/lib/transport/metadata_batch.c \
-    src/core/lib/transport/pid_controller.c \
-    src/core/lib/transport/service_config.c \
-    src/core/lib/transport/static_metadata.c \
-    src/core/lib/transport/status_conversion.c \
-    src/core/lib/transport/timeout_encoding.c \
-    src/core/lib/transport/transport.c \
-    src/core/lib/transport/transport_op_string.c \
-    src/core/lib/debug/trace.c \
-    src/core/ext/transport/cronet/client/secure/cronet_channel_create.c \
-    src/core/ext/transport/cronet/transport/cronet_api_dummy.c \
-    src/core/ext/transport/cronet/transport/cronet_transport.c \
-    src/core/ext/transport/chttp2/client/secure/secure_channel_create.c \
-    src/core/ext/transport/chttp2/transport/bin_decoder.c \
-    src/core/ext/transport/chttp2/transport/bin_encoder.c \
-    src/core/ext/transport/chttp2/transport/chttp2_plugin.c \
-    src/core/ext/transport/chttp2/transport/chttp2_transport.c \
-    src/core/ext/transport/chttp2/transport/flow_control.c \
-    src/core/ext/transport/chttp2/transport/frame_data.c \
-    src/core/ext/transport/chttp2/transport/frame_goaway.c \
-    src/core/ext/transport/chttp2/transport/frame_ping.c \
-    src/core/ext/transport/chttp2/transport/frame_rst_stream.c \
-    src/core/ext/transport/chttp2/transport/frame_settings.c \
-    src/core/ext/transport/chttp2/transport/frame_window_update.c \
-    src/core/ext/transport/chttp2/transport/hpack_encoder.c \
-    src/core/ext/transport/chttp2/transport/hpack_parser.c \
-    src/core/ext/transport/chttp2/transport/hpack_table.c \
-    src/core/ext/transport/chttp2/transport/http2_settings.c \
-    src/core/ext/transport/chttp2/transport/huffsyms.c \
-    src/core/ext/transport/chttp2/transport/incoming_metadata.c \
-    src/core/ext/transport/chttp2/transport/parsing.c \
-    src/core/ext/transport/chttp2/transport/stream_lists.c \
-    src/core/ext/transport/chttp2/transport/stream_map.c \
-    src/core/ext/transport/chttp2/transport/varint.c \
-    src/core/ext/transport/chttp2/transport/writing.c \
-    src/core/ext/transport/chttp2/alpn/alpn.c \
-    src/core/ext/filters/http/client/http_client_filter.c \
-    src/core/ext/filters/http/http_filters_plugin.c \
-    src/core/ext/filters/http/message_compress/message_compress_filter.c \
-    src/core/ext/filters/http/server/http_server_filter.c \
-    src/core/ext/filters/client_channel/channel_connectivity.c \
-    src/core/ext/filters/client_channel/client_channel.c \
-    src/core/ext/filters/client_channel/client_channel_factory.c \
-    src/core/ext/filters/client_channel/client_channel_plugin.c \
-    src/core/ext/filters/client_channel/connector.c \
-    src/core/ext/filters/client_channel/http_connect_handshaker.c \
-    src/core/ext/filters/client_channel/http_proxy.c \
-    src/core/ext/filters/client_channel/lb_policy.c \
-    src/core/ext/filters/client_channel/lb_policy_factory.c \
-    src/core/ext/filters/client_channel/lb_policy_registry.c \
-    src/core/ext/filters/client_channel/parse_address.c \
-    src/core/ext/filters/client_channel/proxy_mapper.c \
-    src/core/ext/filters/client_channel/proxy_mapper_registry.c \
-    src/core/ext/filters/client_channel/resolver.c \
-    src/core/ext/filters/client_channel/resolver_factory.c \
-    src/core/ext/filters/client_channel/resolver_registry.c \
-    src/core/ext/filters/client_channel/retry_throttle.c \
-    src/core/ext/filters/client_channel/subchannel.c \
-    src/core/ext/filters/client_channel/subchannel_index.c \
-    src/core/ext/filters/client_channel/uri_parser.c \
-    src/core/ext/filters/deadline/deadline_filter.c \
-    src/core/lib/http/httpcli_security_connector.c \
-    src/core/lib/security/context/security_context.c \
-    src/core/lib/security/credentials/composite/composite_credentials.c \
-    src/core/lib/security/credentials/credentials.c \
-    src/core/lib/security/credentials/credentials_metadata.c \
-    src/core/lib/security/credentials/fake/fake_credentials.c \
-    src/core/lib/security/credentials/google_default/credentials_generic.c \
-    src/core/lib/security/credentials/google_default/google_default_credentials.c \
-    src/core/lib/security/credentials/iam/iam_credentials.c \
-    src/core/lib/security/credentials/jwt/json_token.c \
-    src/core/lib/security/credentials/jwt/jwt_credentials.c \
-    src/core/lib/security/credentials/jwt/jwt_verifier.c \
-    src/core/lib/security/credentials/oauth2/oauth2_credentials.c \
-    src/core/lib/security/credentials/plugin/plugin_credentials.c \
-    src/core/lib/security/credentials/ssl/ssl_credentials.c \
-    src/core/lib/security/transport/client_auth_filter.c \
-    src/core/lib/security/transport/lb_targets_info.c \
-    src/core/lib/security/transport/secure_endpoint.c \
-    src/core/lib/security/transport/security_connector.c \
-    src/core/lib/security/transport/security_handshaker.c \
-    src/core/lib/security/transport/server_auth_filter.c \
-    src/core/lib/security/transport/tsi_error.c \
-    src/core/lib/security/util/json_util.c \
-    src/core/lib/surface/init_secure.c \
-    src/core/tsi/fake_transport_security.c \
-    src/core/tsi/gts_transport_security.c \
-    src/core/tsi/ssl_transport_security.c \
-    src/core/tsi/transport_security_grpc.c \
-    src/core/tsi/transport_security.c \
-    src/core/tsi/transport_security_adapter.c \
-    src/core/ext/transport/chttp2/client/chttp2_connector.c \
-    src/core/ext/filters/load_reporting/server_load_reporting_filter.c \
-    src/core/ext/filters/load_reporting/server_load_reporting_plugin.c \
-    src/core/plugin_registry/grpc_cronet_plugin_registry.c \
+    src/core/lib/surface/metadata_array.cc \
+    src/core/lib/surface/server.cc \
+    src/core/lib/surface/validate_metadata.cc \
+    src/core/lib/surface/version.cc \
+    src/core/lib/transport/bdp_estimator.cc \
+    src/core/lib/transport/byte_stream.cc \
+    src/core/lib/transport/connectivity_state.cc \
+    src/core/lib/transport/error_utils.cc \
+    src/core/lib/transport/metadata.cc \
+    src/core/lib/transport/metadata_batch.cc \
+    src/core/lib/transport/pid_controller.cc \
+    src/core/lib/transport/service_config.cc \
+    src/core/lib/transport/static_metadata.cc \
+    src/core/lib/transport/status_conversion.cc \
+    src/core/lib/transport/timeout_encoding.cc \
+    src/core/lib/transport/transport.cc \
+    src/core/lib/transport/transport_op_string.cc \
+    src/core/lib/debug/trace.cc \
+    src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc \
+    src/core/ext/transport/cronet/transport/cronet_api_dummy.cc \
+    src/core/ext/transport/cronet/transport/cronet_transport.cc \
+    src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc \
+    src/core/ext/transport/chttp2/transport/bin_decoder.cc \
+    src/core/ext/transport/chttp2/transport/bin_encoder.cc \
+    src/core/ext/transport/chttp2/transport/chttp2_plugin.cc \
+    src/core/ext/transport/chttp2/transport/chttp2_transport.cc \
+    src/core/ext/transport/chttp2/transport/flow_control.cc \
+    src/core/ext/transport/chttp2/transport/frame_data.cc \
+    src/core/ext/transport/chttp2/transport/frame_goaway.cc \
+    src/core/ext/transport/chttp2/transport/frame_ping.cc \
+    src/core/ext/transport/chttp2/transport/frame_rst_stream.cc \
+    src/core/ext/transport/chttp2/transport/frame_settings.cc \
+    src/core/ext/transport/chttp2/transport/frame_window_update.cc \
+    src/core/ext/transport/chttp2/transport/hpack_encoder.cc \
+    src/core/ext/transport/chttp2/transport/hpack_parser.cc \
+    src/core/ext/transport/chttp2/transport/hpack_table.cc \
+    src/core/ext/transport/chttp2/transport/http2_settings.cc \
+    src/core/ext/transport/chttp2/transport/huffsyms.cc \
+    src/core/ext/transport/chttp2/transport/incoming_metadata.cc \
+    src/core/ext/transport/chttp2/transport/parsing.cc \
+    src/core/ext/transport/chttp2/transport/stream_lists.cc \
+    src/core/ext/transport/chttp2/transport/stream_map.cc \
+    src/core/ext/transport/chttp2/transport/varint.cc \
+    src/core/ext/transport/chttp2/transport/writing.cc \
+    src/core/ext/transport/chttp2/alpn/alpn.cc \
+    src/core/ext/filters/http/client/http_client_filter.cc \
+    src/core/ext/filters/http/http_filters_plugin.cc \
+    src/core/ext/filters/http/message_compress/message_compress_filter.cc \
+    src/core/ext/filters/http/server/http_server_filter.cc \
+    src/core/ext/filters/client_channel/channel_connectivity.cc \
+    src/core/ext/filters/client_channel/client_channel.cc \
+    src/core/ext/filters/client_channel/client_channel_factory.cc \
+    src/core/ext/filters/client_channel/client_channel_plugin.cc \
+    src/core/ext/filters/client_channel/connector.cc \
+    src/core/ext/filters/client_channel/http_connect_handshaker.cc \
+    src/core/ext/filters/client_channel/http_proxy.cc \
+    src/core/ext/filters/client_channel/lb_policy.cc \
+    src/core/ext/filters/client_channel/lb_policy_factory.cc \
+    src/core/ext/filters/client_channel/lb_policy_registry.cc \
+    src/core/ext/filters/client_channel/parse_address.cc \
+    src/core/ext/filters/client_channel/proxy_mapper.cc \
+    src/core/ext/filters/client_channel/proxy_mapper_registry.cc \
+    src/core/ext/filters/client_channel/resolver.cc \
+    src/core/ext/filters/client_channel/resolver_factory.cc \
+    src/core/ext/filters/client_channel/resolver_registry.cc \
+    src/core/ext/filters/client_channel/retry_throttle.cc \
+    src/core/ext/filters/client_channel/subchannel.cc \
+    src/core/ext/filters/client_channel/subchannel_index.cc \
+    src/core/ext/filters/client_channel/uri_parser.cc \
+    src/core/ext/filters/deadline/deadline_filter.cc \
+    src/core/lib/http/httpcli_security_connector.cc \
+    src/core/lib/security/context/security_context.cc \
+    src/core/lib/security/credentials/composite/composite_credentials.cc \
+    src/core/lib/security/credentials/credentials.cc \
+    src/core/lib/security/credentials/credentials_metadata.cc \
+    src/core/lib/security/credentials/fake/fake_credentials.cc \
+    src/core/lib/security/credentials/google_default/credentials_generic.cc \
+    src/core/lib/security/credentials/google_default/google_default_credentials.cc \
+    src/core/lib/security/credentials/iam/iam_credentials.cc \
+    src/core/lib/security/credentials/jwt/json_token.cc \
+    src/core/lib/security/credentials/jwt/jwt_credentials.cc \
+    src/core/lib/security/credentials/jwt/jwt_verifier.cc \
+    src/core/lib/security/credentials/oauth2/oauth2_credentials.cc \
+    src/core/lib/security/credentials/plugin/plugin_credentials.cc \
+    src/core/lib/security/credentials/ssl/ssl_credentials.cc \
+    src/core/lib/security/transport/client_auth_filter.cc \
+    src/core/lib/security/transport/lb_targets_info.cc \
+    src/core/lib/security/transport/secure_endpoint.cc \
+    src/core/lib/security/transport/security_connector.cc \
+    src/core/lib/security/transport/security_handshaker.cc \
+    src/core/lib/security/transport/server_auth_filter.cc \
+    src/core/lib/security/transport/tsi_error.cc \
+    src/core/lib/security/util/json_util.cc \
+    src/core/lib/surface/init_secure.cc \
+    src/core/tsi/fake_transport_security.cc \
+    src/core/tsi/gts_transport_security.cc \
+    src/core/tsi/ssl_transport_security.cc \
+    src/core/tsi/transport_security_grpc.cc \
+    src/core/tsi/transport_security.cc \
+    src/core/tsi/transport_security_adapter.cc \
+    src/core/ext/transport/chttp2/client/chttp2_connector.cc \
+    src/core/ext/filters/load_reporting/server_load_reporting_filter.cc \
+    src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc \
+    src/core/plugin_registry/grpc_cronet_plugin_registry.cc \
 
 PUBLIC_HEADERS_C += \
     include/grpc/impl/codegen/byte_buffer.h \
@@ -3600,7 +3600,7 @@
     test/core/end2end/data/server1_key.c \
     test/core/end2end/data/test_root_cert.c \
     test/core/security/oauth2_utils.c \
-    src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c \
+    src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc \
     test/core/end2end/cq_verifier.c \
     test/core/end2end/fixtures/http_proxy_fixture.c \
     test/core/end2end/fixtures/proxy.c \
@@ -3615,186 +3615,186 @@
     test/core/util/port_server_client.c \
     test/core/util/slice_splitter.c \
     test/core/util/trickle_endpoint.c \
-    src/core/lib/channel/channel_args.c \
-    src/core/lib/channel/channel_stack.c \
-    src/core/lib/channel/channel_stack_builder.c \
-    src/core/lib/channel/connected_channel.c \
-    src/core/lib/channel/handshaker.c \
-    src/core/lib/channel/handshaker_factory.c \
-    src/core/lib/channel/handshaker_registry.c \
-    src/core/lib/compression/compression.c \
-    src/core/lib/compression/message_compress.c \
-    src/core/lib/compression/stream_compression.c \
-    src/core/lib/compression/stream_compression_gzip.c \
-    src/core/lib/compression/stream_compression_identity.c \
-    src/core/lib/debug/stats.c \
-    src/core/lib/debug/stats_data.c \
-    src/core/lib/http/format_request.c \
-    src/core/lib/http/httpcli.c \
-    src/core/lib/http/parser.c \
-    src/core/lib/iomgr/call_combiner.c \
-    src/core/lib/iomgr/closure.c \
-    src/core/lib/iomgr/combiner.c \
-    src/core/lib/iomgr/endpoint.c \
-    src/core/lib/iomgr/endpoint_pair_posix.c \
-    src/core/lib/iomgr/endpoint_pair_uv.c \
-    src/core/lib/iomgr/endpoint_pair_windows.c \
-    src/core/lib/iomgr/error.c \
-    src/core/lib/iomgr/ev_epoll1_linux.c \
-    src/core/lib/iomgr/ev_epollex_linux.c \
-    src/core/lib/iomgr/ev_epollsig_linux.c \
-    src/core/lib/iomgr/ev_poll_posix.c \
-    src/core/lib/iomgr/ev_posix.c \
-    src/core/lib/iomgr/ev_windows.c \
-    src/core/lib/iomgr/exec_ctx.c \
-    src/core/lib/iomgr/executor.c \
-    src/core/lib/iomgr/gethostname_fallback.c \
-    src/core/lib/iomgr/gethostname_host_name_max.c \
-    src/core/lib/iomgr/gethostname_sysconf.c \
-    src/core/lib/iomgr/iocp_windows.c \
-    src/core/lib/iomgr/iomgr.c \
-    src/core/lib/iomgr/iomgr_posix.c \
-    src/core/lib/iomgr/iomgr_uv.c \
-    src/core/lib/iomgr/iomgr_windows.c \
-    src/core/lib/iomgr/is_epollexclusive_available.c \
-    src/core/lib/iomgr/load_file.c \
-    src/core/lib/iomgr/lockfree_event.c \
-    src/core/lib/iomgr/network_status_tracker.c \
-    src/core/lib/iomgr/polling_entity.c \
-    src/core/lib/iomgr/pollset_set_uv.c \
-    src/core/lib/iomgr/pollset_set_windows.c \
-    src/core/lib/iomgr/pollset_uv.c \
-    src/core/lib/iomgr/pollset_windows.c \
-    src/core/lib/iomgr/resolve_address_posix.c \
-    src/core/lib/iomgr/resolve_address_uv.c \
-    src/core/lib/iomgr/resolve_address_windows.c \
-    src/core/lib/iomgr/resource_quota.c \
-    src/core/lib/iomgr/sockaddr_utils.c \
-    src/core/lib/iomgr/socket_factory_posix.c \
-    src/core/lib/iomgr/socket_mutator.c \
-    src/core/lib/iomgr/socket_utils_common_posix.c \
-    src/core/lib/iomgr/socket_utils_linux.c \
-    src/core/lib/iomgr/socket_utils_posix.c \
-    src/core/lib/iomgr/socket_utils_uv.c \
-    src/core/lib/iomgr/socket_utils_windows.c \
-    src/core/lib/iomgr/socket_windows.c \
-    src/core/lib/iomgr/tcp_client_posix.c \
-    src/core/lib/iomgr/tcp_client_uv.c \
-    src/core/lib/iomgr/tcp_client_windows.c \
-    src/core/lib/iomgr/tcp_posix.c \
-    src/core/lib/iomgr/tcp_server_posix.c \
-    src/core/lib/iomgr/tcp_server_utils_posix_common.c \
-    src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c \
-    src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c \
-    src/core/lib/iomgr/tcp_server_uv.c \
-    src/core/lib/iomgr/tcp_server_windows.c \
-    src/core/lib/iomgr/tcp_uv.c \
-    src/core/lib/iomgr/tcp_windows.c \
-    src/core/lib/iomgr/time_averaged_stats.c \
-    src/core/lib/iomgr/timer_generic.c \
-    src/core/lib/iomgr/timer_heap.c \
-    src/core/lib/iomgr/timer_manager.c \
-    src/core/lib/iomgr/timer_uv.c \
-    src/core/lib/iomgr/udp_server.c \
-    src/core/lib/iomgr/unix_sockets_posix.c \
-    src/core/lib/iomgr/unix_sockets_posix_noop.c \
-    src/core/lib/iomgr/wakeup_fd_cv.c \
-    src/core/lib/iomgr/wakeup_fd_eventfd.c \
-    src/core/lib/iomgr/wakeup_fd_nospecial.c \
-    src/core/lib/iomgr/wakeup_fd_pipe.c \
-    src/core/lib/iomgr/wakeup_fd_posix.c \
-    src/core/lib/json/json.c \
-    src/core/lib/json/json_reader.c \
-    src/core/lib/json/json_string.c \
-    src/core/lib/json/json_writer.c \
-    src/core/lib/slice/b64.c \
-    src/core/lib/slice/percent_encoding.c \
-    src/core/lib/slice/slice.c \
-    src/core/lib/slice/slice_buffer.c \
-    src/core/lib/slice/slice_hash_table.c \
-    src/core/lib/slice/slice_intern.c \
-    src/core/lib/slice/slice_string_helpers.c \
-    src/core/lib/surface/alarm.c \
-    src/core/lib/surface/api_trace.c \
-    src/core/lib/surface/byte_buffer.c \
-    src/core/lib/surface/byte_buffer_reader.c \
-    src/core/lib/surface/call.c \
-    src/core/lib/surface/call_details.c \
-    src/core/lib/surface/call_log_batch.c \
-    src/core/lib/surface/channel.c \
-    src/core/lib/surface/channel_init.c \
-    src/core/lib/surface/channel_ping.c \
-    src/core/lib/surface/channel_stack_type.c \
-    src/core/lib/surface/completion_queue.c \
-    src/core/lib/surface/completion_queue_factory.c \
-    src/core/lib/surface/event_string.c \
+    src/core/lib/channel/channel_args.cc \
+    src/core/lib/channel/channel_stack.cc \
+    src/core/lib/channel/channel_stack_builder.cc \
+    src/core/lib/channel/connected_channel.cc \
+    src/core/lib/channel/handshaker.cc \
+    src/core/lib/channel/handshaker_factory.cc \
+    src/core/lib/channel/handshaker_registry.cc \
+    src/core/lib/compression/compression.cc \
+    src/core/lib/compression/message_compress.cc \
+    src/core/lib/compression/stream_compression.cc \
+    src/core/lib/compression/stream_compression_gzip.cc \
+    src/core/lib/compression/stream_compression_identity.cc \
+    src/core/lib/debug/stats.cc \
+    src/core/lib/debug/stats_data.cc \
+    src/core/lib/http/format_request.cc \
+    src/core/lib/http/httpcli.cc \
+    src/core/lib/http/parser.cc \
+    src/core/lib/iomgr/call_combiner.cc \
+    src/core/lib/iomgr/closure.cc \
+    src/core/lib/iomgr/combiner.cc \
+    src/core/lib/iomgr/endpoint.cc \
+    src/core/lib/iomgr/endpoint_pair_posix.cc \
+    src/core/lib/iomgr/endpoint_pair_uv.cc \
+    src/core/lib/iomgr/endpoint_pair_windows.cc \
+    src/core/lib/iomgr/error.cc \
+    src/core/lib/iomgr/ev_epoll1_linux.cc \
+    src/core/lib/iomgr/ev_epollex_linux.cc \
+    src/core/lib/iomgr/ev_epollsig_linux.cc \
+    src/core/lib/iomgr/ev_poll_posix.cc \
+    src/core/lib/iomgr/ev_posix.cc \
+    src/core/lib/iomgr/ev_windows.cc \
+    src/core/lib/iomgr/exec_ctx.cc \
+    src/core/lib/iomgr/executor.cc \
+    src/core/lib/iomgr/gethostname_fallback.cc \
+    src/core/lib/iomgr/gethostname_host_name_max.cc \
+    src/core/lib/iomgr/gethostname_sysconf.cc \
+    src/core/lib/iomgr/iocp_windows.cc \
+    src/core/lib/iomgr/iomgr.cc \
+    src/core/lib/iomgr/iomgr_posix.cc \
+    src/core/lib/iomgr/iomgr_uv.cc \
+    src/core/lib/iomgr/iomgr_windows.cc \
+    src/core/lib/iomgr/is_epollexclusive_available.cc \
+    src/core/lib/iomgr/load_file.cc \
+    src/core/lib/iomgr/lockfree_event.cc \
+    src/core/lib/iomgr/network_status_tracker.cc \
+    src/core/lib/iomgr/polling_entity.cc \
+    src/core/lib/iomgr/pollset_set_uv.cc \
+    src/core/lib/iomgr/pollset_set_windows.cc \
+    src/core/lib/iomgr/pollset_uv.cc \
+    src/core/lib/iomgr/pollset_windows.cc \
+    src/core/lib/iomgr/resolve_address_posix.cc \
+    src/core/lib/iomgr/resolve_address_uv.cc \
+    src/core/lib/iomgr/resolve_address_windows.cc \
+    src/core/lib/iomgr/resource_quota.cc \
+    src/core/lib/iomgr/sockaddr_utils.cc \
+    src/core/lib/iomgr/socket_factory_posix.cc \
+    src/core/lib/iomgr/socket_mutator.cc \
+    src/core/lib/iomgr/socket_utils_common_posix.cc \
+    src/core/lib/iomgr/socket_utils_linux.cc \
+    src/core/lib/iomgr/socket_utils_posix.cc \
+    src/core/lib/iomgr/socket_utils_uv.cc \
+    src/core/lib/iomgr/socket_utils_windows.cc \
+    src/core/lib/iomgr/socket_windows.cc \
+    src/core/lib/iomgr/tcp_client_posix.cc \
+    src/core/lib/iomgr/tcp_client_uv.cc \
+    src/core/lib/iomgr/tcp_client_windows.cc \
+    src/core/lib/iomgr/tcp_posix.cc \
+    src/core/lib/iomgr/tcp_server_posix.cc \
+    src/core/lib/iomgr/tcp_server_utils_posix_common.cc \
+    src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc \
+    src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc \
+    src/core/lib/iomgr/tcp_server_uv.cc \
+    src/core/lib/iomgr/tcp_server_windows.cc \
+    src/core/lib/iomgr/tcp_uv.cc \
+    src/core/lib/iomgr/tcp_windows.cc \
+    src/core/lib/iomgr/time_averaged_stats.cc \
+    src/core/lib/iomgr/timer_generic.cc \
+    src/core/lib/iomgr/timer_heap.cc \
+    src/core/lib/iomgr/timer_manager.cc \
+    src/core/lib/iomgr/timer_uv.cc \
+    src/core/lib/iomgr/udp_server.cc \
+    src/core/lib/iomgr/unix_sockets_posix.cc \
+    src/core/lib/iomgr/unix_sockets_posix_noop.cc \
+    src/core/lib/iomgr/wakeup_fd_cv.cc \
+    src/core/lib/iomgr/wakeup_fd_eventfd.cc \
+    src/core/lib/iomgr/wakeup_fd_nospecial.cc \
+    src/core/lib/iomgr/wakeup_fd_pipe.cc \
+    src/core/lib/iomgr/wakeup_fd_posix.cc \
+    src/core/lib/json/json.cc \
+    src/core/lib/json/json_reader.cc \
+    src/core/lib/json/json_string.cc \
+    src/core/lib/json/json_writer.cc \
+    src/core/lib/slice/b64.cc \
+    src/core/lib/slice/percent_encoding.cc \
+    src/core/lib/slice/slice.cc \
+    src/core/lib/slice/slice_buffer.cc \
+    src/core/lib/slice/slice_hash_table.cc \
+    src/core/lib/slice/slice_intern.cc \
+    src/core/lib/slice/slice_string_helpers.cc \
+    src/core/lib/surface/alarm.cc \
+    src/core/lib/surface/api_trace.cc \
+    src/core/lib/surface/byte_buffer.cc \
+    src/core/lib/surface/byte_buffer_reader.cc \
+    src/core/lib/surface/call.cc \
+    src/core/lib/surface/call_details.cc \
+    src/core/lib/surface/call_log_batch.cc \
+    src/core/lib/surface/channel.cc \
+    src/core/lib/surface/channel_init.cc \
+    src/core/lib/surface/channel_ping.cc \
+    src/core/lib/surface/channel_stack_type.cc \
+    src/core/lib/surface/completion_queue.cc \
+    src/core/lib/surface/completion_queue_factory.cc \
+    src/core/lib/surface/event_string.cc \
     src/core/lib/surface/lame_client.cc \
-    src/core/lib/surface/metadata_array.c \
-    src/core/lib/surface/server.c \
-    src/core/lib/surface/validate_metadata.c \
-    src/core/lib/surface/version.c \
-    src/core/lib/transport/bdp_estimator.c \
-    src/core/lib/transport/byte_stream.c \
-    src/core/lib/transport/connectivity_state.c \
-    src/core/lib/transport/error_utils.c \
-    src/core/lib/transport/metadata.c \
-    src/core/lib/transport/metadata_batch.c \
-    src/core/lib/transport/pid_controller.c \
-    src/core/lib/transport/service_config.c \
-    src/core/lib/transport/static_metadata.c \
-    src/core/lib/transport/status_conversion.c \
-    src/core/lib/transport/timeout_encoding.c \
-    src/core/lib/transport/transport.c \
-    src/core/lib/transport/transport_op_string.c \
-    src/core/lib/debug/trace.c \
-    src/core/ext/filters/client_channel/channel_connectivity.c \
-    src/core/ext/filters/client_channel/client_channel.c \
-    src/core/ext/filters/client_channel/client_channel_factory.c \
-    src/core/ext/filters/client_channel/client_channel_plugin.c \
-    src/core/ext/filters/client_channel/connector.c \
-    src/core/ext/filters/client_channel/http_connect_handshaker.c \
-    src/core/ext/filters/client_channel/http_proxy.c \
-    src/core/ext/filters/client_channel/lb_policy.c \
-    src/core/ext/filters/client_channel/lb_policy_factory.c \
-    src/core/ext/filters/client_channel/lb_policy_registry.c \
-    src/core/ext/filters/client_channel/parse_address.c \
-    src/core/ext/filters/client_channel/proxy_mapper.c \
-    src/core/ext/filters/client_channel/proxy_mapper_registry.c \
-    src/core/ext/filters/client_channel/resolver.c \
-    src/core/ext/filters/client_channel/resolver_factory.c \
-    src/core/ext/filters/client_channel/resolver_registry.c \
-    src/core/ext/filters/client_channel/retry_throttle.c \
-    src/core/ext/filters/client_channel/subchannel.c \
-    src/core/ext/filters/client_channel/subchannel_index.c \
-    src/core/ext/filters/client_channel/uri_parser.c \
-    src/core/ext/filters/deadline/deadline_filter.c \
-    src/core/ext/transport/chttp2/transport/bin_decoder.c \
-    src/core/ext/transport/chttp2/transport/bin_encoder.c \
-    src/core/ext/transport/chttp2/transport/chttp2_plugin.c \
-    src/core/ext/transport/chttp2/transport/chttp2_transport.c \
-    src/core/ext/transport/chttp2/transport/flow_control.c \
-    src/core/ext/transport/chttp2/transport/frame_data.c \
-    src/core/ext/transport/chttp2/transport/frame_goaway.c \
-    src/core/ext/transport/chttp2/transport/frame_ping.c \
-    src/core/ext/transport/chttp2/transport/frame_rst_stream.c \
-    src/core/ext/transport/chttp2/transport/frame_settings.c \
-    src/core/ext/transport/chttp2/transport/frame_window_update.c \
-    src/core/ext/transport/chttp2/transport/hpack_encoder.c \
-    src/core/ext/transport/chttp2/transport/hpack_parser.c \
-    src/core/ext/transport/chttp2/transport/hpack_table.c \
-    src/core/ext/transport/chttp2/transport/http2_settings.c \
-    src/core/ext/transport/chttp2/transport/huffsyms.c \
-    src/core/ext/transport/chttp2/transport/incoming_metadata.c \
-    src/core/ext/transport/chttp2/transport/parsing.c \
-    src/core/ext/transport/chttp2/transport/stream_lists.c \
-    src/core/ext/transport/chttp2/transport/stream_map.c \
-    src/core/ext/transport/chttp2/transport/varint.c \
-    src/core/ext/transport/chttp2/transport/writing.c \
-    src/core/ext/transport/chttp2/alpn/alpn.c \
-    src/core/ext/filters/http/client/http_client_filter.c \
-    src/core/ext/filters/http/http_filters_plugin.c \
-    src/core/ext/filters/http/message_compress/message_compress_filter.c \
-    src/core/ext/filters/http/server/http_server_filter.c \
+    src/core/lib/surface/metadata_array.cc \
+    src/core/lib/surface/server.cc \
+    src/core/lib/surface/validate_metadata.cc \
+    src/core/lib/surface/version.cc \
+    src/core/lib/transport/bdp_estimator.cc \
+    src/core/lib/transport/byte_stream.cc \
+    src/core/lib/transport/connectivity_state.cc \
+    src/core/lib/transport/error_utils.cc \
+    src/core/lib/transport/metadata.cc \
+    src/core/lib/transport/metadata_batch.cc \
+    src/core/lib/transport/pid_controller.cc \
+    src/core/lib/transport/service_config.cc \
+    src/core/lib/transport/static_metadata.cc \
+    src/core/lib/transport/status_conversion.cc \
+    src/core/lib/transport/timeout_encoding.cc \
+    src/core/lib/transport/transport.cc \
+    src/core/lib/transport/transport_op_string.cc \
+    src/core/lib/debug/trace.cc \
+    src/core/ext/filters/client_channel/channel_connectivity.cc \
+    src/core/ext/filters/client_channel/client_channel.cc \
+    src/core/ext/filters/client_channel/client_channel_factory.cc \
+    src/core/ext/filters/client_channel/client_channel_plugin.cc \
+    src/core/ext/filters/client_channel/connector.cc \
+    src/core/ext/filters/client_channel/http_connect_handshaker.cc \
+    src/core/ext/filters/client_channel/http_proxy.cc \
+    src/core/ext/filters/client_channel/lb_policy.cc \
+    src/core/ext/filters/client_channel/lb_policy_factory.cc \
+    src/core/ext/filters/client_channel/lb_policy_registry.cc \
+    src/core/ext/filters/client_channel/parse_address.cc \
+    src/core/ext/filters/client_channel/proxy_mapper.cc \
+    src/core/ext/filters/client_channel/proxy_mapper_registry.cc \
+    src/core/ext/filters/client_channel/resolver.cc \
+    src/core/ext/filters/client_channel/resolver_factory.cc \
+    src/core/ext/filters/client_channel/resolver_registry.cc \
+    src/core/ext/filters/client_channel/retry_throttle.cc \
+    src/core/ext/filters/client_channel/subchannel.cc \
+    src/core/ext/filters/client_channel/subchannel_index.cc \
+    src/core/ext/filters/client_channel/uri_parser.cc \
+    src/core/ext/filters/deadline/deadline_filter.cc \
+    src/core/ext/transport/chttp2/transport/bin_decoder.cc \
+    src/core/ext/transport/chttp2/transport/bin_encoder.cc \
+    src/core/ext/transport/chttp2/transport/chttp2_plugin.cc \
+    src/core/ext/transport/chttp2/transport/chttp2_transport.cc \
+    src/core/ext/transport/chttp2/transport/flow_control.cc \
+    src/core/ext/transport/chttp2/transport/frame_data.cc \
+    src/core/ext/transport/chttp2/transport/frame_goaway.cc \
+    src/core/ext/transport/chttp2/transport/frame_ping.cc \
+    src/core/ext/transport/chttp2/transport/frame_rst_stream.cc \
+    src/core/ext/transport/chttp2/transport/frame_settings.cc \
+    src/core/ext/transport/chttp2/transport/frame_window_update.cc \
+    src/core/ext/transport/chttp2/transport/hpack_encoder.cc \
+    src/core/ext/transport/chttp2/transport/hpack_parser.cc \
+    src/core/ext/transport/chttp2/transport/hpack_table.cc \
+    src/core/ext/transport/chttp2/transport/http2_settings.cc \
+    src/core/ext/transport/chttp2/transport/huffsyms.cc \
+    src/core/ext/transport/chttp2/transport/incoming_metadata.cc \
+    src/core/ext/transport/chttp2/transport/parsing.cc \
+    src/core/ext/transport/chttp2/transport/stream_lists.cc \
+    src/core/ext/transport/chttp2/transport/stream_map.cc \
+    src/core/ext/transport/chttp2/transport/varint.cc \
+    src/core/ext/transport/chttp2/transport/writing.cc \
+    src/core/ext/transport/chttp2/alpn/alpn.cc \
+    src/core/ext/filters/http/client/http_client_filter.cc \
+    src/core/ext/filters/http/http_filters_plugin.cc \
+    src/core/ext/filters/http/message_compress/message_compress_filter.cc \
+    src/core/ext/filters/http/server/http_server_filter.cc \
 
 PUBLIC_HEADERS_C += \
     include/grpc/impl/codegen/byte_buffer.h \
@@ -3854,7 +3854,7 @@
 
 
 LIBGRPC_TEST_UTIL_UNSECURE_SRC = \
-    src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c \
+    src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc \
     test/core/end2end/cq_verifier.c \
     test/core/end2end/fixtures/http_proxy_fixture.c \
     test/core/end2end/fixtures/proxy.c \
@@ -3869,186 +3869,186 @@
     test/core/util/port_server_client.c \
     test/core/util/slice_splitter.c \
     test/core/util/trickle_endpoint.c \
-    src/core/lib/channel/channel_args.c \
-    src/core/lib/channel/channel_stack.c \
-    src/core/lib/channel/channel_stack_builder.c \
-    src/core/lib/channel/connected_channel.c \
-    src/core/lib/channel/handshaker.c \
-    src/core/lib/channel/handshaker_factory.c \
-    src/core/lib/channel/handshaker_registry.c \
-    src/core/lib/compression/compression.c \
-    src/core/lib/compression/message_compress.c \
-    src/core/lib/compression/stream_compression.c \
-    src/core/lib/compression/stream_compression_gzip.c \
-    src/core/lib/compression/stream_compression_identity.c \
-    src/core/lib/debug/stats.c \
-    src/core/lib/debug/stats_data.c \
-    src/core/lib/http/format_request.c \
-    src/core/lib/http/httpcli.c \
-    src/core/lib/http/parser.c \
-    src/core/lib/iomgr/call_combiner.c \
-    src/core/lib/iomgr/closure.c \
-    src/core/lib/iomgr/combiner.c \
-    src/core/lib/iomgr/endpoint.c \
-    src/core/lib/iomgr/endpoint_pair_posix.c \
-    src/core/lib/iomgr/endpoint_pair_uv.c \
-    src/core/lib/iomgr/endpoint_pair_windows.c \
-    src/core/lib/iomgr/error.c \
-    src/core/lib/iomgr/ev_epoll1_linux.c \
-    src/core/lib/iomgr/ev_epollex_linux.c \
-    src/core/lib/iomgr/ev_epollsig_linux.c \
-    src/core/lib/iomgr/ev_poll_posix.c \
-    src/core/lib/iomgr/ev_posix.c \
-    src/core/lib/iomgr/ev_windows.c \
-    src/core/lib/iomgr/exec_ctx.c \
-    src/core/lib/iomgr/executor.c \
-    src/core/lib/iomgr/gethostname_fallback.c \
-    src/core/lib/iomgr/gethostname_host_name_max.c \
-    src/core/lib/iomgr/gethostname_sysconf.c \
-    src/core/lib/iomgr/iocp_windows.c \
-    src/core/lib/iomgr/iomgr.c \
-    src/core/lib/iomgr/iomgr_posix.c \
-    src/core/lib/iomgr/iomgr_uv.c \
-    src/core/lib/iomgr/iomgr_windows.c \
-    src/core/lib/iomgr/is_epollexclusive_available.c \
-    src/core/lib/iomgr/load_file.c \
-    src/core/lib/iomgr/lockfree_event.c \
-    src/core/lib/iomgr/network_status_tracker.c \
-    src/core/lib/iomgr/polling_entity.c \
-    src/core/lib/iomgr/pollset_set_uv.c \
-    src/core/lib/iomgr/pollset_set_windows.c \
-    src/core/lib/iomgr/pollset_uv.c \
-    src/core/lib/iomgr/pollset_windows.c \
-    src/core/lib/iomgr/resolve_address_posix.c \
-    src/core/lib/iomgr/resolve_address_uv.c \
-    src/core/lib/iomgr/resolve_address_windows.c \
-    src/core/lib/iomgr/resource_quota.c \
-    src/core/lib/iomgr/sockaddr_utils.c \
-    src/core/lib/iomgr/socket_factory_posix.c \
-    src/core/lib/iomgr/socket_mutator.c \
-    src/core/lib/iomgr/socket_utils_common_posix.c \
-    src/core/lib/iomgr/socket_utils_linux.c \
-    src/core/lib/iomgr/socket_utils_posix.c \
-    src/core/lib/iomgr/socket_utils_uv.c \
-    src/core/lib/iomgr/socket_utils_windows.c \
-    src/core/lib/iomgr/socket_windows.c \
-    src/core/lib/iomgr/tcp_client_posix.c \
-    src/core/lib/iomgr/tcp_client_uv.c \
-    src/core/lib/iomgr/tcp_client_windows.c \
-    src/core/lib/iomgr/tcp_posix.c \
-    src/core/lib/iomgr/tcp_server_posix.c \
-    src/core/lib/iomgr/tcp_server_utils_posix_common.c \
-    src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c \
-    src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c \
-    src/core/lib/iomgr/tcp_server_uv.c \
-    src/core/lib/iomgr/tcp_server_windows.c \
-    src/core/lib/iomgr/tcp_uv.c \
-    src/core/lib/iomgr/tcp_windows.c \
-    src/core/lib/iomgr/time_averaged_stats.c \
-    src/core/lib/iomgr/timer_generic.c \
-    src/core/lib/iomgr/timer_heap.c \
-    src/core/lib/iomgr/timer_manager.c \
-    src/core/lib/iomgr/timer_uv.c \
-    src/core/lib/iomgr/udp_server.c \
-    src/core/lib/iomgr/unix_sockets_posix.c \
-    src/core/lib/iomgr/unix_sockets_posix_noop.c \
-    src/core/lib/iomgr/wakeup_fd_cv.c \
-    src/core/lib/iomgr/wakeup_fd_eventfd.c \
-    src/core/lib/iomgr/wakeup_fd_nospecial.c \
-    src/core/lib/iomgr/wakeup_fd_pipe.c \
-    src/core/lib/iomgr/wakeup_fd_posix.c \
-    src/core/lib/json/json.c \
-    src/core/lib/json/json_reader.c \
-    src/core/lib/json/json_string.c \
-    src/core/lib/json/json_writer.c \
-    src/core/lib/slice/b64.c \
-    src/core/lib/slice/percent_encoding.c \
-    src/core/lib/slice/slice.c \
-    src/core/lib/slice/slice_buffer.c \
-    src/core/lib/slice/slice_hash_table.c \
-    src/core/lib/slice/slice_intern.c \
-    src/core/lib/slice/slice_string_helpers.c \
-    src/core/lib/surface/alarm.c \
-    src/core/lib/surface/api_trace.c \
-    src/core/lib/surface/byte_buffer.c \
-    src/core/lib/surface/byte_buffer_reader.c \
-    src/core/lib/surface/call.c \
-    src/core/lib/surface/call_details.c \
-    src/core/lib/surface/call_log_batch.c \
-    src/core/lib/surface/channel.c \
-    src/core/lib/surface/channel_init.c \
-    src/core/lib/surface/channel_ping.c \
-    src/core/lib/surface/channel_stack_type.c \
-    src/core/lib/surface/completion_queue.c \
-    src/core/lib/surface/completion_queue_factory.c \
-    src/core/lib/surface/event_string.c \
+    src/core/lib/channel/channel_args.cc \
+    src/core/lib/channel/channel_stack.cc \
+    src/core/lib/channel/channel_stack_builder.cc \
+    src/core/lib/channel/connected_channel.cc \
+    src/core/lib/channel/handshaker.cc \
+    src/core/lib/channel/handshaker_factory.cc \
+    src/core/lib/channel/handshaker_registry.cc \
+    src/core/lib/compression/compression.cc \
+    src/core/lib/compression/message_compress.cc \
+    src/core/lib/compression/stream_compression.cc \
+    src/core/lib/compression/stream_compression_gzip.cc \
+    src/core/lib/compression/stream_compression_identity.cc \
+    src/core/lib/debug/stats.cc \
+    src/core/lib/debug/stats_data.cc \
+    src/core/lib/http/format_request.cc \
+    src/core/lib/http/httpcli.cc \
+    src/core/lib/http/parser.cc \
+    src/core/lib/iomgr/call_combiner.cc \
+    src/core/lib/iomgr/closure.cc \
+    src/core/lib/iomgr/combiner.cc \
+    src/core/lib/iomgr/endpoint.cc \
+    src/core/lib/iomgr/endpoint_pair_posix.cc \
+    src/core/lib/iomgr/endpoint_pair_uv.cc \
+    src/core/lib/iomgr/endpoint_pair_windows.cc \
+    src/core/lib/iomgr/error.cc \
+    src/core/lib/iomgr/ev_epoll1_linux.cc \
+    src/core/lib/iomgr/ev_epollex_linux.cc \
+    src/core/lib/iomgr/ev_epollsig_linux.cc \
+    src/core/lib/iomgr/ev_poll_posix.cc \
+    src/core/lib/iomgr/ev_posix.cc \
+    src/core/lib/iomgr/ev_windows.cc \
+    src/core/lib/iomgr/exec_ctx.cc \
+    src/core/lib/iomgr/executor.cc \
+    src/core/lib/iomgr/gethostname_fallback.cc \
+    src/core/lib/iomgr/gethostname_host_name_max.cc \
+    src/core/lib/iomgr/gethostname_sysconf.cc \
+    src/core/lib/iomgr/iocp_windows.cc \
+    src/core/lib/iomgr/iomgr.cc \
+    src/core/lib/iomgr/iomgr_posix.cc \
+    src/core/lib/iomgr/iomgr_uv.cc \
+    src/core/lib/iomgr/iomgr_windows.cc \
+    src/core/lib/iomgr/is_epollexclusive_available.cc \
+    src/core/lib/iomgr/load_file.cc \
+    src/core/lib/iomgr/lockfree_event.cc \
+    src/core/lib/iomgr/network_status_tracker.cc \
+    src/core/lib/iomgr/polling_entity.cc \
+    src/core/lib/iomgr/pollset_set_uv.cc \
+    src/core/lib/iomgr/pollset_set_windows.cc \
+    src/core/lib/iomgr/pollset_uv.cc \
+    src/core/lib/iomgr/pollset_windows.cc \
+    src/core/lib/iomgr/resolve_address_posix.cc \
+    src/core/lib/iomgr/resolve_address_uv.cc \
+    src/core/lib/iomgr/resolve_address_windows.cc \
+    src/core/lib/iomgr/resource_quota.cc \
+    src/core/lib/iomgr/sockaddr_utils.cc \
+    src/core/lib/iomgr/socket_factory_posix.cc \
+    src/core/lib/iomgr/socket_mutator.cc \
+    src/core/lib/iomgr/socket_utils_common_posix.cc \
+    src/core/lib/iomgr/socket_utils_linux.cc \
+    src/core/lib/iomgr/socket_utils_posix.cc \
+    src/core/lib/iomgr/socket_utils_uv.cc \
+    src/core/lib/iomgr/socket_utils_windows.cc \
+    src/core/lib/iomgr/socket_windows.cc \
+    src/core/lib/iomgr/tcp_client_posix.cc \
+    src/core/lib/iomgr/tcp_client_uv.cc \
+    src/core/lib/iomgr/tcp_client_windows.cc \
+    src/core/lib/iomgr/tcp_posix.cc \
+    src/core/lib/iomgr/tcp_server_posix.cc \
+    src/core/lib/iomgr/tcp_server_utils_posix_common.cc \
+    src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc \
+    src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc \
+    src/core/lib/iomgr/tcp_server_uv.cc \
+    src/core/lib/iomgr/tcp_server_windows.cc \
+    src/core/lib/iomgr/tcp_uv.cc \
+    src/core/lib/iomgr/tcp_windows.cc \
+    src/core/lib/iomgr/time_averaged_stats.cc \
+    src/core/lib/iomgr/timer_generic.cc \
+    src/core/lib/iomgr/timer_heap.cc \
+    src/core/lib/iomgr/timer_manager.cc \
+    src/core/lib/iomgr/timer_uv.cc \
+    src/core/lib/iomgr/udp_server.cc \
+    src/core/lib/iomgr/unix_sockets_posix.cc \
+    src/core/lib/iomgr/unix_sockets_posix_noop.cc \
+    src/core/lib/iomgr/wakeup_fd_cv.cc \
+    src/core/lib/iomgr/wakeup_fd_eventfd.cc \
+    src/core/lib/iomgr/wakeup_fd_nospecial.cc \
+    src/core/lib/iomgr/wakeup_fd_pipe.cc \
+    src/core/lib/iomgr/wakeup_fd_posix.cc \
+    src/core/lib/json/json.cc \
+    src/core/lib/json/json_reader.cc \
+    src/core/lib/json/json_string.cc \
+    src/core/lib/json/json_writer.cc \
+    src/core/lib/slice/b64.cc \
+    src/core/lib/slice/percent_encoding.cc \
+    src/core/lib/slice/slice.cc \
+    src/core/lib/slice/slice_buffer.cc \
+    src/core/lib/slice/slice_hash_table.cc \
+    src/core/lib/slice/slice_intern.cc \
+    src/core/lib/slice/slice_string_helpers.cc \
+    src/core/lib/surface/alarm.cc \
+    src/core/lib/surface/api_trace.cc \
+    src/core/lib/surface/byte_buffer.cc \
+    src/core/lib/surface/byte_buffer_reader.cc \
+    src/core/lib/surface/call.cc \
+    src/core/lib/surface/call_details.cc \
+    src/core/lib/surface/call_log_batch.cc \
+    src/core/lib/surface/channel.cc \
+    src/core/lib/surface/channel_init.cc \
+    src/core/lib/surface/channel_ping.cc \
+    src/core/lib/surface/channel_stack_type.cc \
+    src/core/lib/surface/completion_queue.cc \
+    src/core/lib/surface/completion_queue_factory.cc \
+    src/core/lib/surface/event_string.cc \
     src/core/lib/surface/lame_client.cc \
-    src/core/lib/surface/metadata_array.c \
-    src/core/lib/surface/server.c \
-    src/core/lib/surface/validate_metadata.c \
-    src/core/lib/surface/version.c \
-    src/core/lib/transport/bdp_estimator.c \
-    src/core/lib/transport/byte_stream.c \
-    src/core/lib/transport/connectivity_state.c \
-    src/core/lib/transport/error_utils.c \
-    src/core/lib/transport/metadata.c \
-    src/core/lib/transport/metadata_batch.c \
-    src/core/lib/transport/pid_controller.c \
-    src/core/lib/transport/service_config.c \
-    src/core/lib/transport/static_metadata.c \
-    src/core/lib/transport/status_conversion.c \
-    src/core/lib/transport/timeout_encoding.c \
-    src/core/lib/transport/transport.c \
-    src/core/lib/transport/transport_op_string.c \
-    src/core/lib/debug/trace.c \
-    src/core/ext/filters/client_channel/channel_connectivity.c \
-    src/core/ext/filters/client_channel/client_channel.c \
-    src/core/ext/filters/client_channel/client_channel_factory.c \
-    src/core/ext/filters/client_channel/client_channel_plugin.c \
-    src/core/ext/filters/client_channel/connector.c \
-    src/core/ext/filters/client_channel/http_connect_handshaker.c \
-    src/core/ext/filters/client_channel/http_proxy.c \
-    src/core/ext/filters/client_channel/lb_policy.c \
-    src/core/ext/filters/client_channel/lb_policy_factory.c \
-    src/core/ext/filters/client_channel/lb_policy_registry.c \
-    src/core/ext/filters/client_channel/parse_address.c \
-    src/core/ext/filters/client_channel/proxy_mapper.c \
-    src/core/ext/filters/client_channel/proxy_mapper_registry.c \
-    src/core/ext/filters/client_channel/resolver.c \
-    src/core/ext/filters/client_channel/resolver_factory.c \
-    src/core/ext/filters/client_channel/resolver_registry.c \
-    src/core/ext/filters/client_channel/retry_throttle.c \
-    src/core/ext/filters/client_channel/subchannel.c \
-    src/core/ext/filters/client_channel/subchannel_index.c \
-    src/core/ext/filters/client_channel/uri_parser.c \
-    src/core/ext/filters/deadline/deadline_filter.c \
-    src/core/ext/transport/chttp2/transport/bin_decoder.c \
-    src/core/ext/transport/chttp2/transport/bin_encoder.c \
-    src/core/ext/transport/chttp2/transport/chttp2_plugin.c \
-    src/core/ext/transport/chttp2/transport/chttp2_transport.c \
-    src/core/ext/transport/chttp2/transport/flow_control.c \
-    src/core/ext/transport/chttp2/transport/frame_data.c \
-    src/core/ext/transport/chttp2/transport/frame_goaway.c \
-    src/core/ext/transport/chttp2/transport/frame_ping.c \
-    src/core/ext/transport/chttp2/transport/frame_rst_stream.c \
-    src/core/ext/transport/chttp2/transport/frame_settings.c \
-    src/core/ext/transport/chttp2/transport/frame_window_update.c \
-    src/core/ext/transport/chttp2/transport/hpack_encoder.c \
-    src/core/ext/transport/chttp2/transport/hpack_parser.c \
-    src/core/ext/transport/chttp2/transport/hpack_table.c \
-    src/core/ext/transport/chttp2/transport/http2_settings.c \
-    src/core/ext/transport/chttp2/transport/huffsyms.c \
-    src/core/ext/transport/chttp2/transport/incoming_metadata.c \
-    src/core/ext/transport/chttp2/transport/parsing.c \
-    src/core/ext/transport/chttp2/transport/stream_lists.c \
-    src/core/ext/transport/chttp2/transport/stream_map.c \
-    src/core/ext/transport/chttp2/transport/varint.c \
-    src/core/ext/transport/chttp2/transport/writing.c \
-    src/core/ext/transport/chttp2/alpn/alpn.c \
-    src/core/ext/filters/http/client/http_client_filter.c \
-    src/core/ext/filters/http/http_filters_plugin.c \
-    src/core/ext/filters/http/message_compress/message_compress_filter.c \
-    src/core/ext/filters/http/server/http_server_filter.c \
+    src/core/lib/surface/metadata_array.cc \
+    src/core/lib/surface/server.cc \
+    src/core/lib/surface/validate_metadata.cc \
+    src/core/lib/surface/version.cc \
+    src/core/lib/transport/bdp_estimator.cc \
+    src/core/lib/transport/byte_stream.cc \
+    src/core/lib/transport/connectivity_state.cc \
+    src/core/lib/transport/error_utils.cc \
+    src/core/lib/transport/metadata.cc \
+    src/core/lib/transport/metadata_batch.cc \
+    src/core/lib/transport/pid_controller.cc \
+    src/core/lib/transport/service_config.cc \
+    src/core/lib/transport/static_metadata.cc \
+    src/core/lib/transport/status_conversion.cc \
+    src/core/lib/transport/timeout_encoding.cc \
+    src/core/lib/transport/transport.cc \
+    src/core/lib/transport/transport_op_string.cc \
+    src/core/lib/debug/trace.cc \
+    src/core/ext/filters/client_channel/channel_connectivity.cc \
+    src/core/ext/filters/client_channel/client_channel.cc \
+    src/core/ext/filters/client_channel/client_channel_factory.cc \
+    src/core/ext/filters/client_channel/client_channel_plugin.cc \
+    src/core/ext/filters/client_channel/connector.cc \
+    src/core/ext/filters/client_channel/http_connect_handshaker.cc \
+    src/core/ext/filters/client_channel/http_proxy.cc \
+    src/core/ext/filters/client_channel/lb_policy.cc \
+    src/core/ext/filters/client_channel/lb_policy_factory.cc \
+    src/core/ext/filters/client_channel/lb_policy_registry.cc \
+    src/core/ext/filters/client_channel/parse_address.cc \
+    src/core/ext/filters/client_channel/proxy_mapper.cc \
+    src/core/ext/filters/client_channel/proxy_mapper_registry.cc \
+    src/core/ext/filters/client_channel/resolver.cc \
+    src/core/ext/filters/client_channel/resolver_factory.cc \
+    src/core/ext/filters/client_channel/resolver_registry.cc \
+    src/core/ext/filters/client_channel/retry_throttle.cc \
+    src/core/ext/filters/client_channel/subchannel.cc \
+    src/core/ext/filters/client_channel/subchannel_index.cc \
+    src/core/ext/filters/client_channel/uri_parser.cc \
+    src/core/ext/filters/deadline/deadline_filter.cc \
+    src/core/ext/transport/chttp2/transport/bin_decoder.cc \
+    src/core/ext/transport/chttp2/transport/bin_encoder.cc \
+    src/core/ext/transport/chttp2/transport/chttp2_plugin.cc \
+    src/core/ext/transport/chttp2/transport/chttp2_transport.cc \
+    src/core/ext/transport/chttp2/transport/flow_control.cc \
+    src/core/ext/transport/chttp2/transport/frame_data.cc \
+    src/core/ext/transport/chttp2/transport/frame_goaway.cc \
+    src/core/ext/transport/chttp2/transport/frame_ping.cc \
+    src/core/ext/transport/chttp2/transport/frame_rst_stream.cc \
+    src/core/ext/transport/chttp2/transport/frame_settings.cc \
+    src/core/ext/transport/chttp2/transport/frame_window_update.cc \
+    src/core/ext/transport/chttp2/transport/hpack_encoder.cc \
+    src/core/ext/transport/chttp2/transport/hpack_parser.cc \
+    src/core/ext/transport/chttp2/transport/hpack_table.cc \
+    src/core/ext/transport/chttp2/transport/http2_settings.cc \
+    src/core/ext/transport/chttp2/transport/huffsyms.cc \
+    src/core/ext/transport/chttp2/transport/incoming_metadata.cc \
+    src/core/ext/transport/chttp2/transport/parsing.cc \
+    src/core/ext/transport/chttp2/transport/stream_lists.cc \
+    src/core/ext/transport/chttp2/transport/stream_map.cc \
+    src/core/ext/transport/chttp2/transport/varint.cc \
+    src/core/ext/transport/chttp2/transport/writing.cc \
+    src/core/ext/transport/chttp2/alpn/alpn.cc \
+    src/core/ext/filters/http/client/http_client_filter.cc \
+    src/core/ext/filters/http/http_filters_plugin.cc \
+    src/core/ext/filters/http/message_compress/message_compress_filter.cc \
+    src/core/ext/filters/http/server/http_server_filter.cc \
 
 PUBLIC_HEADERS_C += \
     include/grpc/impl/codegen/byte_buffer.h \
@@ -4094,236 +4094,236 @@
 
 
 LIBGRPC_UNSECURE_SRC = \
-    src/core/lib/surface/init.c \
-    src/core/lib/surface/init_unsecure.c \
-    src/core/lib/channel/channel_args.c \
-    src/core/lib/channel/channel_stack.c \
-    src/core/lib/channel/channel_stack_builder.c \
-    src/core/lib/channel/connected_channel.c \
-    src/core/lib/channel/handshaker.c \
-    src/core/lib/channel/handshaker_factory.c \
-    src/core/lib/channel/handshaker_registry.c \
-    src/core/lib/compression/compression.c \
-    src/core/lib/compression/message_compress.c \
-    src/core/lib/compression/stream_compression.c \
-    src/core/lib/compression/stream_compression_gzip.c \
-    src/core/lib/compression/stream_compression_identity.c \
-    src/core/lib/debug/stats.c \
-    src/core/lib/debug/stats_data.c \
-    src/core/lib/http/format_request.c \
-    src/core/lib/http/httpcli.c \
-    src/core/lib/http/parser.c \
-    src/core/lib/iomgr/call_combiner.c \
-    src/core/lib/iomgr/closure.c \
-    src/core/lib/iomgr/combiner.c \
-    src/core/lib/iomgr/endpoint.c \
-    src/core/lib/iomgr/endpoint_pair_posix.c \
-    src/core/lib/iomgr/endpoint_pair_uv.c \
-    src/core/lib/iomgr/endpoint_pair_windows.c \
-    src/core/lib/iomgr/error.c \
-    src/core/lib/iomgr/ev_epoll1_linux.c \
-    src/core/lib/iomgr/ev_epollex_linux.c \
-    src/core/lib/iomgr/ev_epollsig_linux.c \
-    src/core/lib/iomgr/ev_poll_posix.c \
-    src/core/lib/iomgr/ev_posix.c \
-    src/core/lib/iomgr/ev_windows.c \
-    src/core/lib/iomgr/exec_ctx.c \
-    src/core/lib/iomgr/executor.c \
-    src/core/lib/iomgr/gethostname_fallback.c \
-    src/core/lib/iomgr/gethostname_host_name_max.c \
-    src/core/lib/iomgr/gethostname_sysconf.c \
-    src/core/lib/iomgr/iocp_windows.c \
-    src/core/lib/iomgr/iomgr.c \
-    src/core/lib/iomgr/iomgr_posix.c \
-    src/core/lib/iomgr/iomgr_uv.c \
-    src/core/lib/iomgr/iomgr_windows.c \
-    src/core/lib/iomgr/is_epollexclusive_available.c \
-    src/core/lib/iomgr/load_file.c \
-    src/core/lib/iomgr/lockfree_event.c \
-    src/core/lib/iomgr/network_status_tracker.c \
-    src/core/lib/iomgr/polling_entity.c \
-    src/core/lib/iomgr/pollset_set_uv.c \
-    src/core/lib/iomgr/pollset_set_windows.c \
-    src/core/lib/iomgr/pollset_uv.c \
-    src/core/lib/iomgr/pollset_windows.c \
-    src/core/lib/iomgr/resolve_address_posix.c \
-    src/core/lib/iomgr/resolve_address_uv.c \
-    src/core/lib/iomgr/resolve_address_windows.c \
-    src/core/lib/iomgr/resource_quota.c \
-    src/core/lib/iomgr/sockaddr_utils.c \
-    src/core/lib/iomgr/socket_factory_posix.c \
-    src/core/lib/iomgr/socket_mutator.c \
-    src/core/lib/iomgr/socket_utils_common_posix.c \
-    src/core/lib/iomgr/socket_utils_linux.c \
-    src/core/lib/iomgr/socket_utils_posix.c \
-    src/core/lib/iomgr/socket_utils_uv.c \
-    src/core/lib/iomgr/socket_utils_windows.c \
-    src/core/lib/iomgr/socket_windows.c \
-    src/core/lib/iomgr/tcp_client_posix.c \
-    src/core/lib/iomgr/tcp_client_uv.c \
-    src/core/lib/iomgr/tcp_client_windows.c \
-    src/core/lib/iomgr/tcp_posix.c \
-    src/core/lib/iomgr/tcp_server_posix.c \
-    src/core/lib/iomgr/tcp_server_utils_posix_common.c \
-    src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c \
-    src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c \
-    src/core/lib/iomgr/tcp_server_uv.c \
-    src/core/lib/iomgr/tcp_server_windows.c \
-    src/core/lib/iomgr/tcp_uv.c \
-    src/core/lib/iomgr/tcp_windows.c \
-    src/core/lib/iomgr/time_averaged_stats.c \
-    src/core/lib/iomgr/timer_generic.c \
-    src/core/lib/iomgr/timer_heap.c \
-    src/core/lib/iomgr/timer_manager.c \
-    src/core/lib/iomgr/timer_uv.c \
-    src/core/lib/iomgr/udp_server.c \
-    src/core/lib/iomgr/unix_sockets_posix.c \
-    src/core/lib/iomgr/unix_sockets_posix_noop.c \
-    src/core/lib/iomgr/wakeup_fd_cv.c \
-    src/core/lib/iomgr/wakeup_fd_eventfd.c \
-    src/core/lib/iomgr/wakeup_fd_nospecial.c \
-    src/core/lib/iomgr/wakeup_fd_pipe.c \
-    src/core/lib/iomgr/wakeup_fd_posix.c \
-    src/core/lib/json/json.c \
-    src/core/lib/json/json_reader.c \
-    src/core/lib/json/json_string.c \
-    src/core/lib/json/json_writer.c \
-    src/core/lib/slice/b64.c \
-    src/core/lib/slice/percent_encoding.c \
-    src/core/lib/slice/slice.c \
-    src/core/lib/slice/slice_buffer.c \
-    src/core/lib/slice/slice_hash_table.c \
-    src/core/lib/slice/slice_intern.c \
-    src/core/lib/slice/slice_string_helpers.c \
-    src/core/lib/surface/alarm.c \
-    src/core/lib/surface/api_trace.c \
-    src/core/lib/surface/byte_buffer.c \
-    src/core/lib/surface/byte_buffer_reader.c \
-    src/core/lib/surface/call.c \
-    src/core/lib/surface/call_details.c \
-    src/core/lib/surface/call_log_batch.c \
-    src/core/lib/surface/channel.c \
-    src/core/lib/surface/channel_init.c \
-    src/core/lib/surface/channel_ping.c \
-    src/core/lib/surface/channel_stack_type.c \
-    src/core/lib/surface/completion_queue.c \
-    src/core/lib/surface/completion_queue_factory.c \
-    src/core/lib/surface/event_string.c \
+    src/core/lib/surface/init.cc \
+    src/core/lib/surface/init_unsecure.cc \
+    src/core/lib/channel/channel_args.cc \
+    src/core/lib/channel/channel_stack.cc \
+    src/core/lib/channel/channel_stack_builder.cc \
+    src/core/lib/channel/connected_channel.cc \
+    src/core/lib/channel/handshaker.cc \
+    src/core/lib/channel/handshaker_factory.cc \
+    src/core/lib/channel/handshaker_registry.cc \
+    src/core/lib/compression/compression.cc \
+    src/core/lib/compression/message_compress.cc \
+    src/core/lib/compression/stream_compression.cc \
+    src/core/lib/compression/stream_compression_gzip.cc \
+    src/core/lib/compression/stream_compression_identity.cc \
+    src/core/lib/debug/stats.cc \
+    src/core/lib/debug/stats_data.cc \
+    src/core/lib/http/format_request.cc \
+    src/core/lib/http/httpcli.cc \
+    src/core/lib/http/parser.cc \
+    src/core/lib/iomgr/call_combiner.cc \
+    src/core/lib/iomgr/closure.cc \
+    src/core/lib/iomgr/combiner.cc \
+    src/core/lib/iomgr/endpoint.cc \
+    src/core/lib/iomgr/endpoint_pair_posix.cc \
+    src/core/lib/iomgr/endpoint_pair_uv.cc \
+    src/core/lib/iomgr/endpoint_pair_windows.cc \
+    src/core/lib/iomgr/error.cc \
+    src/core/lib/iomgr/ev_epoll1_linux.cc \
+    src/core/lib/iomgr/ev_epollex_linux.cc \
+    src/core/lib/iomgr/ev_epollsig_linux.cc \
+    src/core/lib/iomgr/ev_poll_posix.cc \
+    src/core/lib/iomgr/ev_posix.cc \
+    src/core/lib/iomgr/ev_windows.cc \
+    src/core/lib/iomgr/exec_ctx.cc \
+    src/core/lib/iomgr/executor.cc \
+    src/core/lib/iomgr/gethostname_fallback.cc \
+    src/core/lib/iomgr/gethostname_host_name_max.cc \
+    src/core/lib/iomgr/gethostname_sysconf.cc \
+    src/core/lib/iomgr/iocp_windows.cc \
+    src/core/lib/iomgr/iomgr.cc \
+    src/core/lib/iomgr/iomgr_posix.cc \
+    src/core/lib/iomgr/iomgr_uv.cc \
+    src/core/lib/iomgr/iomgr_windows.cc \
+    src/core/lib/iomgr/is_epollexclusive_available.cc \
+    src/core/lib/iomgr/load_file.cc \
+    src/core/lib/iomgr/lockfree_event.cc \
+    src/core/lib/iomgr/network_status_tracker.cc \
+    src/core/lib/iomgr/polling_entity.cc \
+    src/core/lib/iomgr/pollset_set_uv.cc \
+    src/core/lib/iomgr/pollset_set_windows.cc \
+    src/core/lib/iomgr/pollset_uv.cc \
+    src/core/lib/iomgr/pollset_windows.cc \
+    src/core/lib/iomgr/resolve_address_posix.cc \
+    src/core/lib/iomgr/resolve_address_uv.cc \
+    src/core/lib/iomgr/resolve_address_windows.cc \
+    src/core/lib/iomgr/resource_quota.cc \
+    src/core/lib/iomgr/sockaddr_utils.cc \
+    src/core/lib/iomgr/socket_factory_posix.cc \
+    src/core/lib/iomgr/socket_mutator.cc \
+    src/core/lib/iomgr/socket_utils_common_posix.cc \
+    src/core/lib/iomgr/socket_utils_linux.cc \
+    src/core/lib/iomgr/socket_utils_posix.cc \
+    src/core/lib/iomgr/socket_utils_uv.cc \
+    src/core/lib/iomgr/socket_utils_windows.cc \
+    src/core/lib/iomgr/socket_windows.cc \
+    src/core/lib/iomgr/tcp_client_posix.cc \
+    src/core/lib/iomgr/tcp_client_uv.cc \
+    src/core/lib/iomgr/tcp_client_windows.cc \
+    src/core/lib/iomgr/tcp_posix.cc \
+    src/core/lib/iomgr/tcp_server_posix.cc \
+    src/core/lib/iomgr/tcp_server_utils_posix_common.cc \
+    src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc \
+    src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc \
+    src/core/lib/iomgr/tcp_server_uv.cc \
+    src/core/lib/iomgr/tcp_server_windows.cc \
+    src/core/lib/iomgr/tcp_uv.cc \
+    src/core/lib/iomgr/tcp_windows.cc \
+    src/core/lib/iomgr/time_averaged_stats.cc \
+    src/core/lib/iomgr/timer_generic.cc \
+    src/core/lib/iomgr/timer_heap.cc \
+    src/core/lib/iomgr/timer_manager.cc \
+    src/core/lib/iomgr/timer_uv.cc \
+    src/core/lib/iomgr/udp_server.cc \
+    src/core/lib/iomgr/unix_sockets_posix.cc \
+    src/core/lib/iomgr/unix_sockets_posix_noop.cc \
+    src/core/lib/iomgr/wakeup_fd_cv.cc \
+    src/core/lib/iomgr/wakeup_fd_eventfd.cc \
+    src/core/lib/iomgr/wakeup_fd_nospecial.cc \
+    src/core/lib/iomgr/wakeup_fd_pipe.cc \
+    src/core/lib/iomgr/wakeup_fd_posix.cc \
+    src/core/lib/json/json.cc \
+    src/core/lib/json/json_reader.cc \
+    src/core/lib/json/json_string.cc \
+    src/core/lib/json/json_writer.cc \
+    src/core/lib/slice/b64.cc \
+    src/core/lib/slice/percent_encoding.cc \
+    src/core/lib/slice/slice.cc \
+    src/core/lib/slice/slice_buffer.cc \
+    src/core/lib/slice/slice_hash_table.cc \
+    src/core/lib/slice/slice_intern.cc \
+    src/core/lib/slice/slice_string_helpers.cc \
+    src/core/lib/surface/alarm.cc \
+    src/core/lib/surface/api_trace.cc \
+    src/core/lib/surface/byte_buffer.cc \
+    src/core/lib/surface/byte_buffer_reader.cc \
+    src/core/lib/surface/call.cc \
+    src/core/lib/surface/call_details.cc \
+    src/core/lib/surface/call_log_batch.cc \
+    src/core/lib/surface/channel.cc \
+    src/core/lib/surface/channel_init.cc \
+    src/core/lib/surface/channel_ping.cc \
+    src/core/lib/surface/channel_stack_type.cc \
+    src/core/lib/surface/completion_queue.cc \
+    src/core/lib/surface/completion_queue_factory.cc \
+    src/core/lib/surface/event_string.cc \
     src/core/lib/surface/lame_client.cc \
-    src/core/lib/surface/metadata_array.c \
-    src/core/lib/surface/server.c \
-    src/core/lib/surface/validate_metadata.c \
-    src/core/lib/surface/version.c \
-    src/core/lib/transport/bdp_estimator.c \
-    src/core/lib/transport/byte_stream.c \
-    src/core/lib/transport/connectivity_state.c \
-    src/core/lib/transport/error_utils.c \
-    src/core/lib/transport/metadata.c \
-    src/core/lib/transport/metadata_batch.c \
-    src/core/lib/transport/pid_controller.c \
-    src/core/lib/transport/service_config.c \
-    src/core/lib/transport/static_metadata.c \
-    src/core/lib/transport/status_conversion.c \
-    src/core/lib/transport/timeout_encoding.c \
-    src/core/lib/transport/transport.c \
-    src/core/lib/transport/transport_op_string.c \
-    src/core/lib/debug/trace.c \
-    src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
-    src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c \
-    src/core/ext/transport/chttp2/transport/bin_decoder.c \
-    src/core/ext/transport/chttp2/transport/bin_encoder.c \
-    src/core/ext/transport/chttp2/transport/chttp2_plugin.c \
-    src/core/ext/transport/chttp2/transport/chttp2_transport.c \
-    src/core/ext/transport/chttp2/transport/flow_control.c \
-    src/core/ext/transport/chttp2/transport/frame_data.c \
-    src/core/ext/transport/chttp2/transport/frame_goaway.c \
-    src/core/ext/transport/chttp2/transport/frame_ping.c \
-    src/core/ext/transport/chttp2/transport/frame_rst_stream.c \
-    src/core/ext/transport/chttp2/transport/frame_settings.c \
-    src/core/ext/transport/chttp2/transport/frame_window_update.c \
-    src/core/ext/transport/chttp2/transport/hpack_encoder.c \
-    src/core/ext/transport/chttp2/transport/hpack_parser.c \
-    src/core/ext/transport/chttp2/transport/hpack_table.c \
-    src/core/ext/transport/chttp2/transport/http2_settings.c \
-    src/core/ext/transport/chttp2/transport/huffsyms.c \
-    src/core/ext/transport/chttp2/transport/incoming_metadata.c \
-    src/core/ext/transport/chttp2/transport/parsing.c \
-    src/core/ext/transport/chttp2/transport/stream_lists.c \
-    src/core/ext/transport/chttp2/transport/stream_map.c \
-    src/core/ext/transport/chttp2/transport/varint.c \
-    src/core/ext/transport/chttp2/transport/writing.c \
-    src/core/ext/transport/chttp2/alpn/alpn.c \
-    src/core/ext/filters/http/client/http_client_filter.c \
-    src/core/ext/filters/http/http_filters_plugin.c \
-    src/core/ext/filters/http/message_compress/message_compress_filter.c \
-    src/core/ext/filters/http/server/http_server_filter.c \
-    src/core/ext/transport/chttp2/server/chttp2_server.c \
-    src/core/ext/transport/chttp2/client/insecure/channel_create.c \
-    src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c \
-    src/core/ext/transport/chttp2/client/chttp2_connector.c \
-    src/core/ext/filters/client_channel/channel_connectivity.c \
-    src/core/ext/filters/client_channel/client_channel.c \
-    src/core/ext/filters/client_channel/client_channel_factory.c \
-    src/core/ext/filters/client_channel/client_channel_plugin.c \
-    src/core/ext/filters/client_channel/connector.c \
-    src/core/ext/filters/client_channel/http_connect_handshaker.c \
-    src/core/ext/filters/client_channel/http_proxy.c \
-    src/core/ext/filters/client_channel/lb_policy.c \
-    src/core/ext/filters/client_channel/lb_policy_factory.c \
-    src/core/ext/filters/client_channel/lb_policy_registry.c \
-    src/core/ext/filters/client_channel/parse_address.c \
-    src/core/ext/filters/client_channel/proxy_mapper.c \
-    src/core/ext/filters/client_channel/proxy_mapper_registry.c \
-    src/core/ext/filters/client_channel/resolver.c \
-    src/core/ext/filters/client_channel/resolver_factory.c \
-    src/core/ext/filters/client_channel/resolver_registry.c \
-    src/core/ext/filters/client_channel/retry_throttle.c \
-    src/core/ext/filters/client_channel/subchannel.c \
-    src/core/ext/filters/client_channel/subchannel_index.c \
-    src/core/ext/filters/client_channel/uri_parser.c \
-    src/core/ext/filters/deadline/deadline_filter.c \
-    src/core/ext/transport/inproc/inproc_plugin.c \
-    src/core/ext/transport/inproc/inproc_transport.c \
-    src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c \
-    src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c \
-    src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c \
-    src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c \
-    src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c \
-    src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c \
-    src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c \
-    src/core/ext/filters/load_reporting/server_load_reporting_filter.c \
-    src/core/ext/filters/load_reporting/server_load_reporting_plugin.c \
-    src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c \
-    src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c \
-    src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.c \
-    src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c \
-    src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c \
+    src/core/lib/surface/metadata_array.cc \
+    src/core/lib/surface/server.cc \
+    src/core/lib/surface/validate_metadata.cc \
+    src/core/lib/surface/version.cc \
+    src/core/lib/transport/bdp_estimator.cc \
+    src/core/lib/transport/byte_stream.cc \
+    src/core/lib/transport/connectivity_state.cc \
+    src/core/lib/transport/error_utils.cc \
+    src/core/lib/transport/metadata.cc \
+    src/core/lib/transport/metadata_batch.cc \
+    src/core/lib/transport/pid_controller.cc \
+    src/core/lib/transport/service_config.cc \
+    src/core/lib/transport/static_metadata.cc \
+    src/core/lib/transport/status_conversion.cc \
+    src/core/lib/transport/timeout_encoding.cc \
+    src/core/lib/transport/transport.cc \
+    src/core/lib/transport/transport_op_string.cc \
+    src/core/lib/debug/trace.cc \
+    src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc \
+    src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc \
+    src/core/ext/transport/chttp2/transport/bin_decoder.cc \
+    src/core/ext/transport/chttp2/transport/bin_encoder.cc \
+    src/core/ext/transport/chttp2/transport/chttp2_plugin.cc \
+    src/core/ext/transport/chttp2/transport/chttp2_transport.cc \
+    src/core/ext/transport/chttp2/transport/flow_control.cc \
+    src/core/ext/transport/chttp2/transport/frame_data.cc \
+    src/core/ext/transport/chttp2/transport/frame_goaway.cc \
+    src/core/ext/transport/chttp2/transport/frame_ping.cc \
+    src/core/ext/transport/chttp2/transport/frame_rst_stream.cc \
+    src/core/ext/transport/chttp2/transport/frame_settings.cc \
+    src/core/ext/transport/chttp2/transport/frame_window_update.cc \
+    src/core/ext/transport/chttp2/transport/hpack_encoder.cc \
+    src/core/ext/transport/chttp2/transport/hpack_parser.cc \
+    src/core/ext/transport/chttp2/transport/hpack_table.cc \
+    src/core/ext/transport/chttp2/transport/http2_settings.cc \
+    src/core/ext/transport/chttp2/transport/huffsyms.cc \
+    src/core/ext/transport/chttp2/transport/incoming_metadata.cc \
+    src/core/ext/transport/chttp2/transport/parsing.cc \
+    src/core/ext/transport/chttp2/transport/stream_lists.cc \
+    src/core/ext/transport/chttp2/transport/stream_map.cc \
+    src/core/ext/transport/chttp2/transport/varint.cc \
+    src/core/ext/transport/chttp2/transport/writing.cc \
+    src/core/ext/transport/chttp2/alpn/alpn.cc \
+    src/core/ext/filters/http/client/http_client_filter.cc \
+    src/core/ext/filters/http/http_filters_plugin.cc \
+    src/core/ext/filters/http/message_compress/message_compress_filter.cc \
+    src/core/ext/filters/http/server/http_server_filter.cc \
+    src/core/ext/transport/chttp2/server/chttp2_server.cc \
+    src/core/ext/transport/chttp2/client/insecure/channel_create.cc \
+    src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc \
+    src/core/ext/transport/chttp2/client/chttp2_connector.cc \
+    src/core/ext/filters/client_channel/channel_connectivity.cc \
+    src/core/ext/filters/client_channel/client_channel.cc \
+    src/core/ext/filters/client_channel/client_channel_factory.cc \
+    src/core/ext/filters/client_channel/client_channel_plugin.cc \
+    src/core/ext/filters/client_channel/connector.cc \
+    src/core/ext/filters/client_channel/http_connect_handshaker.cc \
+    src/core/ext/filters/client_channel/http_proxy.cc \
+    src/core/ext/filters/client_channel/lb_policy.cc \
+    src/core/ext/filters/client_channel/lb_policy_factory.cc \
+    src/core/ext/filters/client_channel/lb_policy_registry.cc \
+    src/core/ext/filters/client_channel/parse_address.cc \
+    src/core/ext/filters/client_channel/proxy_mapper.cc \
+    src/core/ext/filters/client_channel/proxy_mapper_registry.cc \
+    src/core/ext/filters/client_channel/resolver.cc \
+    src/core/ext/filters/client_channel/resolver_factory.cc \
+    src/core/ext/filters/client_channel/resolver_registry.cc \
+    src/core/ext/filters/client_channel/retry_throttle.cc \
+    src/core/ext/filters/client_channel/subchannel.cc \
+    src/core/ext/filters/client_channel/subchannel_index.cc \
+    src/core/ext/filters/client_channel/uri_parser.cc \
+    src/core/ext/filters/deadline/deadline_filter.cc \
+    src/core/ext/transport/inproc/inproc_plugin.cc \
+    src/core/ext/transport/inproc/inproc_transport.cc \
+    src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc \
+    src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc \
+    src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc \
+    src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc \
+    src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc \
+    src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc \
+    src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc \
+    src/core/ext/filters/load_reporting/server_load_reporting_filter.cc \
+    src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc \
+    src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc \
+    src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc \
+    src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.cc \
+    src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc \
+    src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc \
     src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c \
     third_party/nanopb/pb_common.c \
     third_party/nanopb/pb_decode.c \
     third_party/nanopb/pb_encode.c \
-    src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c \
-    src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c \
-    src/core/ext/census/base_resources.c \
-    src/core/ext/census/context.c \
+    src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc \
+    src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc \
+    src/core/ext/census/base_resources.cc \
+    src/core/ext/census/context.cc \
     src/core/ext/census/gen/census.pb.c \
     src/core/ext/census/gen/trace_context.pb.c \
-    src/core/ext/census/grpc_context.c \
-    src/core/ext/census/grpc_filter.c \
-    src/core/ext/census/grpc_plugin.c \
-    src/core/ext/census/initialize.c \
-    src/core/ext/census/intrusive_hash_map.c \
-    src/core/ext/census/mlog.c \
-    src/core/ext/census/operation.c \
-    src/core/ext/census/placeholders.c \
-    src/core/ext/census/resource.c \
-    src/core/ext/census/trace_context.c \
-    src/core/ext/census/tracing.c \
-    src/core/ext/filters/max_age/max_age_filter.c \
-    src/core/ext/filters/message_size/message_size_filter.c \
-    src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c \
-    src/core/ext/filters/workarounds/workaround_utils.c \
-    src/core/plugin_registry/grpc_unsecure_plugin_registry.c \
+    src/core/ext/census/grpc_context.cc \
+    src/core/ext/census/grpc_filter.cc \
+    src/core/ext/census/grpc_plugin.cc \
+    src/core/ext/census/initialize.cc \
+    src/core/ext/census/intrusive_hash_map.cc \
+    src/core/ext/census/mlog.cc \
+    src/core/ext/census/operation.cc \
+    src/core/ext/census/placeholders.cc \
+    src/core/ext/census/resource.cc \
+    src/core/ext/census/trace_context.cc \
+    src/core/ext/census/tracing.cc \
+    src/core/ext/filters/max_age/max_age_filter.cc \
+    src/core/ext/filters/message_size/message_size_filter.cc \
+    src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc \
+    src/core/ext/filters/workarounds/workaround_utils.cc \
+    src/core/plugin_registry/grpc_unsecure_plugin_registry.cc \
 
 PUBLIC_HEADERS_C += \
     include/grpc/impl/codegen/byte_buffer.h \
@@ -4811,207 +4811,207 @@
     src/cpp/util/string_ref.cc \
     src/cpp/util/time_cc.cc \
     src/cpp/codegen/codegen_init.cc \
-    src/core/ext/transport/chttp2/client/insecure/channel_create.c \
-    src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c \
-    src/core/ext/transport/chttp2/client/chttp2_connector.c \
-    src/core/ext/transport/chttp2/transport/bin_decoder.c \
-    src/core/ext/transport/chttp2/transport/bin_encoder.c \
-    src/core/ext/transport/chttp2/transport/chttp2_plugin.c \
-    src/core/ext/transport/chttp2/transport/chttp2_transport.c \
-    src/core/ext/transport/chttp2/transport/flow_control.c \
-    src/core/ext/transport/chttp2/transport/frame_data.c \
-    src/core/ext/transport/chttp2/transport/frame_goaway.c \
-    src/core/ext/transport/chttp2/transport/frame_ping.c \
-    src/core/ext/transport/chttp2/transport/frame_rst_stream.c \
-    src/core/ext/transport/chttp2/transport/frame_settings.c \
-    src/core/ext/transport/chttp2/transport/frame_window_update.c \
-    src/core/ext/transport/chttp2/transport/hpack_encoder.c \
-    src/core/ext/transport/chttp2/transport/hpack_parser.c \
-    src/core/ext/transport/chttp2/transport/hpack_table.c \
-    src/core/ext/transport/chttp2/transport/http2_settings.c \
-    src/core/ext/transport/chttp2/transport/huffsyms.c \
-    src/core/ext/transport/chttp2/transport/incoming_metadata.c \
-    src/core/ext/transport/chttp2/transport/parsing.c \
-    src/core/ext/transport/chttp2/transport/stream_lists.c \
-    src/core/ext/transport/chttp2/transport/stream_map.c \
-    src/core/ext/transport/chttp2/transport/varint.c \
-    src/core/ext/transport/chttp2/transport/writing.c \
-    src/core/lib/channel/channel_args.c \
-    src/core/lib/channel/channel_stack.c \
-    src/core/lib/channel/channel_stack_builder.c \
-    src/core/lib/channel/connected_channel.c \
-    src/core/lib/channel/handshaker.c \
-    src/core/lib/channel/handshaker_factory.c \
-    src/core/lib/channel/handshaker_registry.c \
-    src/core/lib/compression/compression.c \
-    src/core/lib/compression/message_compress.c \
-    src/core/lib/compression/stream_compression.c \
-    src/core/lib/compression/stream_compression_gzip.c \
-    src/core/lib/compression/stream_compression_identity.c \
-    src/core/lib/debug/stats.c \
-    src/core/lib/debug/stats_data.c \
-    src/core/lib/http/format_request.c \
-    src/core/lib/http/httpcli.c \
-    src/core/lib/http/parser.c \
-    src/core/lib/iomgr/call_combiner.c \
-    src/core/lib/iomgr/closure.c \
-    src/core/lib/iomgr/combiner.c \
-    src/core/lib/iomgr/endpoint.c \
-    src/core/lib/iomgr/endpoint_pair_posix.c \
-    src/core/lib/iomgr/endpoint_pair_uv.c \
-    src/core/lib/iomgr/endpoint_pair_windows.c \
-    src/core/lib/iomgr/error.c \
-    src/core/lib/iomgr/ev_epoll1_linux.c \
-    src/core/lib/iomgr/ev_epollex_linux.c \
-    src/core/lib/iomgr/ev_epollsig_linux.c \
-    src/core/lib/iomgr/ev_poll_posix.c \
-    src/core/lib/iomgr/ev_posix.c \
-    src/core/lib/iomgr/ev_windows.c \
-    src/core/lib/iomgr/exec_ctx.c \
-    src/core/lib/iomgr/executor.c \
-    src/core/lib/iomgr/gethostname_fallback.c \
-    src/core/lib/iomgr/gethostname_host_name_max.c \
-    src/core/lib/iomgr/gethostname_sysconf.c \
-    src/core/lib/iomgr/iocp_windows.c \
-    src/core/lib/iomgr/iomgr.c \
-    src/core/lib/iomgr/iomgr_posix.c \
-    src/core/lib/iomgr/iomgr_uv.c \
-    src/core/lib/iomgr/iomgr_windows.c \
-    src/core/lib/iomgr/is_epollexclusive_available.c \
-    src/core/lib/iomgr/load_file.c \
-    src/core/lib/iomgr/lockfree_event.c \
-    src/core/lib/iomgr/network_status_tracker.c \
-    src/core/lib/iomgr/polling_entity.c \
-    src/core/lib/iomgr/pollset_set_uv.c \
-    src/core/lib/iomgr/pollset_set_windows.c \
-    src/core/lib/iomgr/pollset_uv.c \
-    src/core/lib/iomgr/pollset_windows.c \
-    src/core/lib/iomgr/resolve_address_posix.c \
-    src/core/lib/iomgr/resolve_address_uv.c \
-    src/core/lib/iomgr/resolve_address_windows.c \
-    src/core/lib/iomgr/resource_quota.c \
-    src/core/lib/iomgr/sockaddr_utils.c \
-    src/core/lib/iomgr/socket_factory_posix.c \
-    src/core/lib/iomgr/socket_mutator.c \
-    src/core/lib/iomgr/socket_utils_common_posix.c \
-    src/core/lib/iomgr/socket_utils_linux.c \
-    src/core/lib/iomgr/socket_utils_posix.c \
-    src/core/lib/iomgr/socket_utils_uv.c \
-    src/core/lib/iomgr/socket_utils_windows.c \
-    src/core/lib/iomgr/socket_windows.c \
-    src/core/lib/iomgr/tcp_client_posix.c \
-    src/core/lib/iomgr/tcp_client_uv.c \
-    src/core/lib/iomgr/tcp_client_windows.c \
-    src/core/lib/iomgr/tcp_posix.c \
-    src/core/lib/iomgr/tcp_server_posix.c \
-    src/core/lib/iomgr/tcp_server_utils_posix_common.c \
-    src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c \
-    src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c \
-    src/core/lib/iomgr/tcp_server_uv.c \
-    src/core/lib/iomgr/tcp_server_windows.c \
-    src/core/lib/iomgr/tcp_uv.c \
-    src/core/lib/iomgr/tcp_windows.c \
-    src/core/lib/iomgr/time_averaged_stats.c \
-    src/core/lib/iomgr/timer_generic.c \
-    src/core/lib/iomgr/timer_heap.c \
-    src/core/lib/iomgr/timer_manager.c \
-    src/core/lib/iomgr/timer_uv.c \
-    src/core/lib/iomgr/udp_server.c \
-    src/core/lib/iomgr/unix_sockets_posix.c \
-    src/core/lib/iomgr/unix_sockets_posix_noop.c \
-    src/core/lib/iomgr/wakeup_fd_cv.c \
-    src/core/lib/iomgr/wakeup_fd_eventfd.c \
-    src/core/lib/iomgr/wakeup_fd_nospecial.c \
-    src/core/lib/iomgr/wakeup_fd_pipe.c \
-    src/core/lib/iomgr/wakeup_fd_posix.c \
-    src/core/lib/json/json.c \
-    src/core/lib/json/json_reader.c \
-    src/core/lib/json/json_string.c \
-    src/core/lib/json/json_writer.c \
-    src/core/lib/slice/b64.c \
-    src/core/lib/slice/percent_encoding.c \
-    src/core/lib/slice/slice.c \
-    src/core/lib/slice/slice_buffer.c \
-    src/core/lib/slice/slice_hash_table.c \
-    src/core/lib/slice/slice_intern.c \
-    src/core/lib/slice/slice_string_helpers.c \
-    src/core/lib/surface/alarm.c \
-    src/core/lib/surface/api_trace.c \
-    src/core/lib/surface/byte_buffer.c \
-    src/core/lib/surface/byte_buffer_reader.c \
-    src/core/lib/surface/call.c \
-    src/core/lib/surface/call_details.c \
-    src/core/lib/surface/call_log_batch.c \
-    src/core/lib/surface/channel.c \
-    src/core/lib/surface/channel_init.c \
-    src/core/lib/surface/channel_ping.c \
-    src/core/lib/surface/channel_stack_type.c \
-    src/core/lib/surface/completion_queue.c \
-    src/core/lib/surface/completion_queue_factory.c \
-    src/core/lib/surface/event_string.c \
+    src/core/ext/transport/chttp2/client/insecure/channel_create.cc \
+    src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc \
+    src/core/ext/transport/chttp2/client/chttp2_connector.cc \
+    src/core/ext/transport/chttp2/transport/bin_decoder.cc \
+    src/core/ext/transport/chttp2/transport/bin_encoder.cc \
+    src/core/ext/transport/chttp2/transport/chttp2_plugin.cc \
+    src/core/ext/transport/chttp2/transport/chttp2_transport.cc \
+    src/core/ext/transport/chttp2/transport/flow_control.cc \
+    src/core/ext/transport/chttp2/transport/frame_data.cc \
+    src/core/ext/transport/chttp2/transport/frame_goaway.cc \
+    src/core/ext/transport/chttp2/transport/frame_ping.cc \
+    src/core/ext/transport/chttp2/transport/frame_rst_stream.cc \
+    src/core/ext/transport/chttp2/transport/frame_settings.cc \
+    src/core/ext/transport/chttp2/transport/frame_window_update.cc \
+    src/core/ext/transport/chttp2/transport/hpack_encoder.cc \
+    src/core/ext/transport/chttp2/transport/hpack_parser.cc \
+    src/core/ext/transport/chttp2/transport/hpack_table.cc \
+    src/core/ext/transport/chttp2/transport/http2_settings.cc \
+    src/core/ext/transport/chttp2/transport/huffsyms.cc \
+    src/core/ext/transport/chttp2/transport/incoming_metadata.cc \
+    src/core/ext/transport/chttp2/transport/parsing.cc \
+    src/core/ext/transport/chttp2/transport/stream_lists.cc \
+    src/core/ext/transport/chttp2/transport/stream_map.cc \
+    src/core/ext/transport/chttp2/transport/varint.cc \
+    src/core/ext/transport/chttp2/transport/writing.cc \
+    src/core/lib/channel/channel_args.cc \
+    src/core/lib/channel/channel_stack.cc \
+    src/core/lib/channel/channel_stack_builder.cc \
+    src/core/lib/channel/connected_channel.cc \
+    src/core/lib/channel/handshaker.cc \
+    src/core/lib/channel/handshaker_factory.cc \
+    src/core/lib/channel/handshaker_registry.cc \
+    src/core/lib/compression/compression.cc \
+    src/core/lib/compression/message_compress.cc \
+    src/core/lib/compression/stream_compression.cc \
+    src/core/lib/compression/stream_compression_gzip.cc \
+    src/core/lib/compression/stream_compression_identity.cc \
+    src/core/lib/debug/stats.cc \
+    src/core/lib/debug/stats_data.cc \
+    src/core/lib/http/format_request.cc \
+    src/core/lib/http/httpcli.cc \
+    src/core/lib/http/parser.cc \
+    src/core/lib/iomgr/call_combiner.cc \
+    src/core/lib/iomgr/closure.cc \
+    src/core/lib/iomgr/combiner.cc \
+    src/core/lib/iomgr/endpoint.cc \
+    src/core/lib/iomgr/endpoint_pair_posix.cc \
+    src/core/lib/iomgr/endpoint_pair_uv.cc \
+    src/core/lib/iomgr/endpoint_pair_windows.cc \
+    src/core/lib/iomgr/error.cc \
+    src/core/lib/iomgr/ev_epoll1_linux.cc \
+    src/core/lib/iomgr/ev_epollex_linux.cc \
+    src/core/lib/iomgr/ev_epollsig_linux.cc \
+    src/core/lib/iomgr/ev_poll_posix.cc \
+    src/core/lib/iomgr/ev_posix.cc \
+    src/core/lib/iomgr/ev_windows.cc \
+    src/core/lib/iomgr/exec_ctx.cc \
+    src/core/lib/iomgr/executor.cc \
+    src/core/lib/iomgr/gethostname_fallback.cc \
+    src/core/lib/iomgr/gethostname_host_name_max.cc \
+    src/core/lib/iomgr/gethostname_sysconf.cc \
+    src/core/lib/iomgr/iocp_windows.cc \
+    src/core/lib/iomgr/iomgr.cc \
+    src/core/lib/iomgr/iomgr_posix.cc \
+    src/core/lib/iomgr/iomgr_uv.cc \
+    src/core/lib/iomgr/iomgr_windows.cc \
+    src/core/lib/iomgr/is_epollexclusive_available.cc \
+    src/core/lib/iomgr/load_file.cc \
+    src/core/lib/iomgr/lockfree_event.cc \
+    src/core/lib/iomgr/network_status_tracker.cc \
+    src/core/lib/iomgr/polling_entity.cc \
+    src/core/lib/iomgr/pollset_set_uv.cc \
+    src/core/lib/iomgr/pollset_set_windows.cc \
+    src/core/lib/iomgr/pollset_uv.cc \
+    src/core/lib/iomgr/pollset_windows.cc \
+    src/core/lib/iomgr/resolve_address_posix.cc \
+    src/core/lib/iomgr/resolve_address_uv.cc \
+    src/core/lib/iomgr/resolve_address_windows.cc \
+    src/core/lib/iomgr/resource_quota.cc \
+    src/core/lib/iomgr/sockaddr_utils.cc \
+    src/core/lib/iomgr/socket_factory_posix.cc \
+    src/core/lib/iomgr/socket_mutator.cc \
+    src/core/lib/iomgr/socket_utils_common_posix.cc \
+    src/core/lib/iomgr/socket_utils_linux.cc \
+    src/core/lib/iomgr/socket_utils_posix.cc \
+    src/core/lib/iomgr/socket_utils_uv.cc \
+    src/core/lib/iomgr/socket_utils_windows.cc \
+    src/core/lib/iomgr/socket_windows.cc \
+    src/core/lib/iomgr/tcp_client_posix.cc \
+    src/core/lib/iomgr/tcp_client_uv.cc \
+    src/core/lib/iomgr/tcp_client_windows.cc \
+    src/core/lib/iomgr/tcp_posix.cc \
+    src/core/lib/iomgr/tcp_server_posix.cc \
+    src/core/lib/iomgr/tcp_server_utils_posix_common.cc \
+    src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc \
+    src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc \
+    src/core/lib/iomgr/tcp_server_uv.cc \
+    src/core/lib/iomgr/tcp_server_windows.cc \
+    src/core/lib/iomgr/tcp_uv.cc \
+    src/core/lib/iomgr/tcp_windows.cc \
+    src/core/lib/iomgr/time_averaged_stats.cc \
+    src/core/lib/iomgr/timer_generic.cc \
+    src/core/lib/iomgr/timer_heap.cc \
+    src/core/lib/iomgr/timer_manager.cc \
+    src/core/lib/iomgr/timer_uv.cc \
+    src/core/lib/iomgr/udp_server.cc \
+    src/core/lib/iomgr/unix_sockets_posix.cc \
+    src/core/lib/iomgr/unix_sockets_posix_noop.cc \
+    src/core/lib/iomgr/wakeup_fd_cv.cc \
+    src/core/lib/iomgr/wakeup_fd_eventfd.cc \
+    src/core/lib/iomgr/wakeup_fd_nospecial.cc \
+    src/core/lib/iomgr/wakeup_fd_pipe.cc \
+    src/core/lib/iomgr/wakeup_fd_posix.cc \
+    src/core/lib/json/json.cc \
+    src/core/lib/json/json_reader.cc \
+    src/core/lib/json/json_string.cc \
+    src/core/lib/json/json_writer.cc \
+    src/core/lib/slice/b64.cc \
+    src/core/lib/slice/percent_encoding.cc \
+    src/core/lib/slice/slice.cc \
+    src/core/lib/slice/slice_buffer.cc \
+    src/core/lib/slice/slice_hash_table.cc \
+    src/core/lib/slice/slice_intern.cc \
+    src/core/lib/slice/slice_string_helpers.cc \
+    src/core/lib/surface/alarm.cc \
+    src/core/lib/surface/api_trace.cc \
+    src/core/lib/surface/byte_buffer.cc \
+    src/core/lib/surface/byte_buffer_reader.cc \
+    src/core/lib/surface/call.cc \
+    src/core/lib/surface/call_details.cc \
+    src/core/lib/surface/call_log_batch.cc \
+    src/core/lib/surface/channel.cc \
+    src/core/lib/surface/channel_init.cc \
+    src/core/lib/surface/channel_ping.cc \
+    src/core/lib/surface/channel_stack_type.cc \
+    src/core/lib/surface/completion_queue.cc \
+    src/core/lib/surface/completion_queue_factory.cc \
+    src/core/lib/surface/event_string.cc \
     src/core/lib/surface/lame_client.cc \
-    src/core/lib/surface/metadata_array.c \
-    src/core/lib/surface/server.c \
-    src/core/lib/surface/validate_metadata.c \
-    src/core/lib/surface/version.c \
-    src/core/lib/transport/bdp_estimator.c \
-    src/core/lib/transport/byte_stream.c \
-    src/core/lib/transport/connectivity_state.c \
-    src/core/lib/transport/error_utils.c \
-    src/core/lib/transport/metadata.c \
-    src/core/lib/transport/metadata_batch.c \
-    src/core/lib/transport/pid_controller.c \
-    src/core/lib/transport/service_config.c \
-    src/core/lib/transport/static_metadata.c \
-    src/core/lib/transport/status_conversion.c \
-    src/core/lib/transport/timeout_encoding.c \
-    src/core/lib/transport/transport.c \
-    src/core/lib/transport/transport_op_string.c \
-    src/core/lib/debug/trace.c \
-    src/core/ext/transport/chttp2/alpn/alpn.c \
-    src/core/ext/filters/http/client/http_client_filter.c \
-    src/core/ext/filters/http/http_filters_plugin.c \
-    src/core/ext/filters/http/message_compress/message_compress_filter.c \
-    src/core/ext/filters/http/server/http_server_filter.c \
-    src/core/ext/filters/client_channel/channel_connectivity.c \
-    src/core/ext/filters/client_channel/client_channel.c \
-    src/core/ext/filters/client_channel/client_channel_factory.c \
-    src/core/ext/filters/client_channel/client_channel_plugin.c \
-    src/core/ext/filters/client_channel/connector.c \
-    src/core/ext/filters/client_channel/http_connect_handshaker.c \
-    src/core/ext/filters/client_channel/http_proxy.c \
-    src/core/ext/filters/client_channel/lb_policy.c \
-    src/core/ext/filters/client_channel/lb_policy_factory.c \
-    src/core/ext/filters/client_channel/lb_policy_registry.c \
-    src/core/ext/filters/client_channel/parse_address.c \
-    src/core/ext/filters/client_channel/proxy_mapper.c \
-    src/core/ext/filters/client_channel/proxy_mapper_registry.c \
-    src/core/ext/filters/client_channel/resolver.c \
-    src/core/ext/filters/client_channel/resolver_factory.c \
-    src/core/ext/filters/client_channel/resolver_registry.c \
-    src/core/ext/filters/client_channel/retry_throttle.c \
-    src/core/ext/filters/client_channel/subchannel.c \
-    src/core/ext/filters/client_channel/subchannel_index.c \
-    src/core/ext/filters/client_channel/uri_parser.c \
-    src/core/ext/filters/deadline/deadline_filter.c \
-    src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
-    src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c \
-    src/core/ext/transport/chttp2/server/chttp2_server.c \
-    src/core/ext/census/base_resources.c \
-    src/core/ext/census/context.c \
+    src/core/lib/surface/metadata_array.cc \
+    src/core/lib/surface/server.cc \
+    src/core/lib/surface/validate_metadata.cc \
+    src/core/lib/surface/version.cc \
+    src/core/lib/transport/bdp_estimator.cc \
+    src/core/lib/transport/byte_stream.cc \
+    src/core/lib/transport/connectivity_state.cc \
+    src/core/lib/transport/error_utils.cc \
+    src/core/lib/transport/metadata.cc \
+    src/core/lib/transport/metadata_batch.cc \
+    src/core/lib/transport/pid_controller.cc \
+    src/core/lib/transport/service_config.cc \
+    src/core/lib/transport/static_metadata.cc \
+    src/core/lib/transport/status_conversion.cc \
+    src/core/lib/transport/timeout_encoding.cc \
+    src/core/lib/transport/transport.cc \
+    src/core/lib/transport/transport_op_string.cc \
+    src/core/lib/debug/trace.cc \
+    src/core/ext/transport/chttp2/alpn/alpn.cc \
+    src/core/ext/filters/http/client/http_client_filter.cc \
+    src/core/ext/filters/http/http_filters_plugin.cc \
+    src/core/ext/filters/http/message_compress/message_compress_filter.cc \
+    src/core/ext/filters/http/server/http_server_filter.cc \
+    src/core/ext/filters/client_channel/channel_connectivity.cc \
+    src/core/ext/filters/client_channel/client_channel.cc \
+    src/core/ext/filters/client_channel/client_channel_factory.cc \
+    src/core/ext/filters/client_channel/client_channel_plugin.cc \
+    src/core/ext/filters/client_channel/connector.cc \
+    src/core/ext/filters/client_channel/http_connect_handshaker.cc \
+    src/core/ext/filters/client_channel/http_proxy.cc \
+    src/core/ext/filters/client_channel/lb_policy.cc \
+    src/core/ext/filters/client_channel/lb_policy_factory.cc \
+    src/core/ext/filters/client_channel/lb_policy_registry.cc \
+    src/core/ext/filters/client_channel/parse_address.cc \
+    src/core/ext/filters/client_channel/proxy_mapper.cc \
+    src/core/ext/filters/client_channel/proxy_mapper_registry.cc \
+    src/core/ext/filters/client_channel/resolver.cc \
+    src/core/ext/filters/client_channel/resolver_factory.cc \
+    src/core/ext/filters/client_channel/resolver_registry.cc \
+    src/core/ext/filters/client_channel/retry_throttle.cc \
+    src/core/ext/filters/client_channel/subchannel.cc \
+    src/core/ext/filters/client_channel/subchannel_index.cc \
+    src/core/ext/filters/client_channel/uri_parser.cc \
+    src/core/ext/filters/deadline/deadline_filter.cc \
+    src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc \
+    src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc \
+    src/core/ext/transport/chttp2/server/chttp2_server.cc \
+    src/core/ext/census/base_resources.cc \
+    src/core/ext/census/context.cc \
     src/core/ext/census/gen/census.pb.c \
     src/core/ext/census/gen/trace_context.pb.c \
-    src/core/ext/census/grpc_context.c \
-    src/core/ext/census/grpc_filter.c \
-    src/core/ext/census/grpc_plugin.c \
-    src/core/ext/census/initialize.c \
-    src/core/ext/census/intrusive_hash_map.c \
-    src/core/ext/census/mlog.c \
-    src/core/ext/census/operation.c \
-    src/core/ext/census/placeholders.c \
-    src/core/ext/census/resource.c \
-    src/core/ext/census/trace_context.c \
-    src/core/ext/census/tracing.c \
+    src/core/ext/census/grpc_context.cc \
+    src/core/ext/census/grpc_filter.cc \
+    src/core/ext/census/grpc_plugin.cc \
+    src/core/ext/census/initialize.cc \
+    src/core/ext/census/intrusive_hash_map.cc \
+    src/core/ext/census/mlog.cc \
+    src/core/ext/census/operation.cc \
+    src/core/ext/census/placeholders.cc \
+    src/core/ext/census/resource.cc \
+    src/core/ext/census/trace_context.cc \
+    src/core/ext/census/tracing.cc \
     third_party/nanopb/pb_common.c \
     third_party/nanopb/pb_decode.c \
     third_party/nanopb/pb_encode.c \
@@ -20158,44 +20158,44 @@
 # This is to ensure the embedded OpenSSL is built beforehand, properly
 # installing headers to their final destination on the drive. We need this
 # otherwise parallel compilation will fail if a source is compiled first.
-src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c: $(OPENSSL_DEP)
-src/core/ext/transport/chttp2/client/secure/secure_channel_create.c: $(OPENSSL_DEP)
-src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c: $(OPENSSL_DEP)
-src/core/ext/transport/cronet/client/secure/cronet_channel_create.c: $(OPENSSL_DEP)
-src/core/ext/transport/cronet/transport/cronet_api_dummy.c: $(OPENSSL_DEP)
-src/core/ext/transport/cronet/transport/cronet_transport.c: $(OPENSSL_DEP)
-src/core/lib/http/httpcli_security_connector.c: $(OPENSSL_DEP)
-src/core/lib/security/context/security_context.c: $(OPENSSL_DEP)
-src/core/lib/security/credentials/composite/composite_credentials.c: $(OPENSSL_DEP)
-src/core/lib/security/credentials/credentials.c: $(OPENSSL_DEP)
-src/core/lib/security/credentials/credentials_metadata.c: $(OPENSSL_DEP)
-src/core/lib/security/credentials/fake/fake_credentials.c: $(OPENSSL_DEP)
-src/core/lib/security/credentials/google_default/credentials_generic.c: $(OPENSSL_DEP)
-src/core/lib/security/credentials/google_default/google_default_credentials.c: $(OPENSSL_DEP)
-src/core/lib/security/credentials/iam/iam_credentials.c: $(OPENSSL_DEP)
-src/core/lib/security/credentials/jwt/json_token.c: $(OPENSSL_DEP)
-src/core/lib/security/credentials/jwt/jwt_credentials.c: $(OPENSSL_DEP)
-src/core/lib/security/credentials/jwt/jwt_verifier.c: $(OPENSSL_DEP)
-src/core/lib/security/credentials/oauth2/oauth2_credentials.c: $(OPENSSL_DEP)
-src/core/lib/security/credentials/plugin/plugin_credentials.c: $(OPENSSL_DEP)
-src/core/lib/security/credentials/ssl/ssl_credentials.c: $(OPENSSL_DEP)
-src/core/lib/security/transport/client_auth_filter.c: $(OPENSSL_DEP)
-src/core/lib/security/transport/lb_targets_info.c: $(OPENSSL_DEP)
-src/core/lib/security/transport/secure_endpoint.c: $(OPENSSL_DEP)
-src/core/lib/security/transport/security_connector.c: $(OPENSSL_DEP)
-src/core/lib/security/transport/security_handshaker.c: $(OPENSSL_DEP)
-src/core/lib/security/transport/server_auth_filter.c: $(OPENSSL_DEP)
-src/core/lib/security/transport/tsi_error.c: $(OPENSSL_DEP)
-src/core/lib/security/util/json_util.c: $(OPENSSL_DEP)
-src/core/lib/surface/init_secure.c: $(OPENSSL_DEP)
-src/core/plugin_registry/grpc_cronet_plugin_registry.c: $(OPENSSL_DEP)
-src/core/plugin_registry/grpc_plugin_registry.c: $(OPENSSL_DEP)
-src/core/tsi/fake_transport_security.c: $(OPENSSL_DEP)
-src/core/tsi/gts_transport_security.c: $(OPENSSL_DEP)
-src/core/tsi/ssl_transport_security.c: $(OPENSSL_DEP)
-src/core/tsi/transport_security.c: $(OPENSSL_DEP)
-src/core/tsi/transport_security_adapter.c: $(OPENSSL_DEP)
-src/core/tsi/transport_security_grpc.c: $(OPENSSL_DEP)
+src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc: $(OPENSSL_DEP)
+src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc: $(OPENSSL_DEP)
+src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc: $(OPENSSL_DEP)
+src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc: $(OPENSSL_DEP)
+src/core/ext/transport/cronet/transport/cronet_api_dummy.cc: $(OPENSSL_DEP)
+src/core/ext/transport/cronet/transport/cronet_transport.cc: $(OPENSSL_DEP)
+src/core/lib/http/httpcli_security_connector.cc: $(OPENSSL_DEP)
+src/core/lib/security/context/security_context.cc: $(OPENSSL_DEP)
+src/core/lib/security/credentials/composite/composite_credentials.cc: $(OPENSSL_DEP)
+src/core/lib/security/credentials/credentials.cc: $(OPENSSL_DEP)
+src/core/lib/security/credentials/credentials_metadata.cc: $(OPENSSL_DEP)
+src/core/lib/security/credentials/fake/fake_credentials.cc: $(OPENSSL_DEP)
+src/core/lib/security/credentials/google_default/credentials_generic.cc: $(OPENSSL_DEP)
+src/core/lib/security/credentials/google_default/google_default_credentials.cc: $(OPENSSL_DEP)
+src/core/lib/security/credentials/iam/iam_credentials.cc: $(OPENSSL_DEP)
+src/core/lib/security/credentials/jwt/json_token.cc: $(OPENSSL_DEP)
+src/core/lib/security/credentials/jwt/jwt_credentials.cc: $(OPENSSL_DEP)
+src/core/lib/security/credentials/jwt/jwt_verifier.cc: $(OPENSSL_DEP)
+src/core/lib/security/credentials/oauth2/oauth2_credentials.cc: $(OPENSSL_DEP)
+src/core/lib/security/credentials/plugin/plugin_credentials.cc: $(OPENSSL_DEP)
+src/core/lib/security/credentials/ssl/ssl_credentials.cc: $(OPENSSL_DEP)
+src/core/lib/security/transport/client_auth_filter.cc: $(OPENSSL_DEP)
+src/core/lib/security/transport/lb_targets_info.cc: $(OPENSSL_DEP)
+src/core/lib/security/transport/secure_endpoint.cc: $(OPENSSL_DEP)
+src/core/lib/security/transport/security_connector.cc: $(OPENSSL_DEP)
+src/core/lib/security/transport/security_handshaker.cc: $(OPENSSL_DEP)
+src/core/lib/security/transport/server_auth_filter.cc: $(OPENSSL_DEP)
+src/core/lib/security/transport/tsi_error.cc: $(OPENSSL_DEP)
+src/core/lib/security/util/json_util.cc: $(OPENSSL_DEP)
+src/core/lib/surface/init_secure.cc: $(OPENSSL_DEP)
+src/core/plugin_registry/grpc_cronet_plugin_registry.cc: $(OPENSSL_DEP)
+src/core/plugin_registry/grpc_plugin_registry.cc: $(OPENSSL_DEP)
+src/core/tsi/fake_transport_security.cc: $(OPENSSL_DEP)
+src/core/tsi/gts_transport_security.cc: $(OPENSSL_DEP)
+src/core/tsi/ssl_transport_security.cc: $(OPENSSL_DEP)
+src/core/tsi/transport_security.cc: $(OPENSSL_DEP)
+src/core/tsi/transport_security_adapter.cc: $(OPENSSL_DEP)
+src/core/tsi/transport_security_grpc.cc: $(OPENSSL_DEP)
 src/cpp/client/cronet_credentials.cc: $(OPENSSL_DEP)
 src/cpp/client/secure_credentials.cc: $(OPENSSL_DEP)
 src/cpp/common/auth_property_iterator.cc: $(OPENSSL_DEP)
diff --git a/Rakefile b/Rakefile
index 1e8960e..d76b9ff 100755
--- a/Rakefile
+++ b/Rakefile
@@ -80,7 +80,9 @@
   grpc_config = ENV['GRPC_CONFIG'] || 'opt'
   verbose = ENV['V'] || '0'
 
-  env = 'CPPFLAGS="-D_WIN32_WINNT=0x600 -DUNICODE -D_UNICODE -Wno-unused-variable -Wno-unused-result -DCARES_STATICLIB -Wno-error=conversion -Wno-incompatible-pointer-types -Wno-sign-compare -Wno-parentheses" '
+  env = 'CPPFLAGS="-D_WIN32_WINNT=0x600 -DNTDDI_VERSION=0x06000000 -DUNICODE -D_UNICODE -Wno-unused-variable -Wno-unused-result -DCARES_STATICLIB -Wno-error=conversion -Wno-sign-compare -Wno-parentheses -Wno-format -DWIN32_LEAN_AND_MEAN" '
+  env += 'CFLAGS="-Wno-incompatible-pointer-types" '
+  env += 'CXXFLAGS="-std=c++11" '
   env += 'LDFLAGS=-static '
   env += 'SYSTEM=MINGW32 '
   env += 'EMBED_ZLIB=true '
diff --git a/binding.gyp b/binding.gyp
index b4f9038..1fd4301 100644
--- a/binding.gyp
+++ b/binding.gyp
@@ -101,6 +101,7 @@
             '-fprofile-arcs',
             '-ftest-coverage',
             '-rdynamic',
+            '-lstdc++',
         ],
       }],
       ['grpc_alpine=="true"', {
@@ -593,52 +594,52 @@
       'dependencies': [
       ],
       'sources': [
-        'src/core/lib/profiling/basic_timers.c',
-        'src/core/lib/profiling/stap_timers.c',
-        'src/core/lib/support/alloc.c',
-        'src/core/lib/support/arena.c',
-        'src/core/lib/support/atm.c',
-        'src/core/lib/support/avl.c',
-        'src/core/lib/support/backoff.c',
-        'src/core/lib/support/cmdline.c',
-        'src/core/lib/support/cpu_iphone.c',
-        'src/core/lib/support/cpu_linux.c',
-        'src/core/lib/support/cpu_posix.c',
-        'src/core/lib/support/cpu_windows.c',
-        'src/core/lib/support/env_linux.c',
-        'src/core/lib/support/env_posix.c',
-        'src/core/lib/support/env_windows.c',
-        'src/core/lib/support/histogram.c',
-        'src/core/lib/support/host_port.c',
-        'src/core/lib/support/log.c',
-        'src/core/lib/support/log_android.c',
-        'src/core/lib/support/log_linux.c',
-        'src/core/lib/support/log_posix.c',
-        'src/core/lib/support/log_windows.c',
-        'src/core/lib/support/mpscq.c',
-        'src/core/lib/support/murmur_hash.c',
-        'src/core/lib/support/stack_lockfree.c',
-        'src/core/lib/support/string.c',
-        'src/core/lib/support/string_posix.c',
-        'src/core/lib/support/string_util_windows.c',
-        'src/core/lib/support/string_windows.c',
-        'src/core/lib/support/subprocess_posix.c',
-        'src/core/lib/support/subprocess_windows.c',
-        'src/core/lib/support/sync.c',
-        'src/core/lib/support/sync_posix.c',
-        'src/core/lib/support/sync_windows.c',
-        'src/core/lib/support/thd.c',
-        'src/core/lib/support/thd_posix.c',
-        'src/core/lib/support/thd_windows.c',
-        'src/core/lib/support/time.c',
-        'src/core/lib/support/time_posix.c',
-        'src/core/lib/support/time_precise.c',
-        'src/core/lib/support/time_windows.c',
-        'src/core/lib/support/tls_pthread.c',
-        'src/core/lib/support/tmpfile_msys.c',
-        'src/core/lib/support/tmpfile_posix.c',
-        'src/core/lib/support/tmpfile_windows.c',
-        'src/core/lib/support/wrap_memcpy.c',
+        'src/core/lib/profiling/basic_timers.cc',
+        'src/core/lib/profiling/stap_timers.cc',
+        'src/core/lib/support/alloc.cc',
+        'src/core/lib/support/arena.cc',
+        'src/core/lib/support/atm.cc',
+        'src/core/lib/support/avl.cc',
+        'src/core/lib/support/backoff.cc',
+        'src/core/lib/support/cmdline.cc',
+        'src/core/lib/support/cpu_iphone.cc',
+        'src/core/lib/support/cpu_linux.cc',
+        'src/core/lib/support/cpu_posix.cc',
+        'src/core/lib/support/cpu_windows.cc',
+        'src/core/lib/support/env_linux.cc',
+        'src/core/lib/support/env_posix.cc',
+        'src/core/lib/support/env_windows.cc',
+        'src/core/lib/support/histogram.cc',
+        'src/core/lib/support/host_port.cc',
+        'src/core/lib/support/log.cc',
+        'src/core/lib/support/log_android.cc',
+        'src/core/lib/support/log_linux.cc',
+        'src/core/lib/support/log_posix.cc',
+        'src/core/lib/support/log_windows.cc',
+        'src/core/lib/support/mpscq.cc',
+        'src/core/lib/support/murmur_hash.cc',
+        'src/core/lib/support/stack_lockfree.cc',
+        'src/core/lib/support/string.cc',
+        'src/core/lib/support/string_posix.cc',
+        'src/core/lib/support/string_util_windows.cc',
+        'src/core/lib/support/string_windows.cc',
+        'src/core/lib/support/subprocess_posix.cc',
+        'src/core/lib/support/subprocess_windows.cc',
+        'src/core/lib/support/sync.cc',
+        'src/core/lib/support/sync_posix.cc',
+        'src/core/lib/support/sync_windows.cc',
+        'src/core/lib/support/thd.cc',
+        'src/core/lib/support/thd_posix.cc',
+        'src/core/lib/support/thd_windows.cc',
+        'src/core/lib/support/time.cc',
+        'src/core/lib/support/time_posix.cc',
+        'src/core/lib/support/time_precise.cc',
+        'src/core/lib/support/time_windows.cc',
+        'src/core/lib/support/tls_pthread.cc',
+        'src/core/lib/support/tmpfile_msys.cc',
+        'src/core/lib/support/tmpfile_posix.cc',
+        'src/core/lib/support/tmpfile_windows.cc',
+        'src/core/lib/support/wrap_memcpy.cc',
       ],
       'conditions': [
         ['OS == "mac"', {
@@ -656,267 +657,267 @@
         'gpr',
       ],
       'sources': [
-        'src/core/lib/surface/init.c',
-        'src/core/lib/channel/channel_args.c',
-        'src/core/lib/channel/channel_stack.c',
-        'src/core/lib/channel/channel_stack_builder.c',
-        'src/core/lib/channel/connected_channel.c',
-        'src/core/lib/channel/handshaker.c',
-        'src/core/lib/channel/handshaker_factory.c',
-        'src/core/lib/channel/handshaker_registry.c',
-        'src/core/lib/compression/compression.c',
-        'src/core/lib/compression/message_compress.c',
-        'src/core/lib/compression/stream_compression.c',
-        'src/core/lib/compression/stream_compression_gzip.c',
-        'src/core/lib/compression/stream_compression_identity.c',
-        'src/core/lib/debug/stats.c',
-        'src/core/lib/debug/stats_data.c',
-        'src/core/lib/http/format_request.c',
-        'src/core/lib/http/httpcli.c',
-        'src/core/lib/http/parser.c',
-        'src/core/lib/iomgr/call_combiner.c',
-        'src/core/lib/iomgr/closure.c',
-        'src/core/lib/iomgr/combiner.c',
-        'src/core/lib/iomgr/endpoint.c',
-        'src/core/lib/iomgr/endpoint_pair_posix.c',
-        'src/core/lib/iomgr/endpoint_pair_uv.c',
-        'src/core/lib/iomgr/endpoint_pair_windows.c',
-        'src/core/lib/iomgr/error.c',
-        'src/core/lib/iomgr/ev_epoll1_linux.c',
-        'src/core/lib/iomgr/ev_epollex_linux.c',
-        'src/core/lib/iomgr/ev_epollsig_linux.c',
-        'src/core/lib/iomgr/ev_poll_posix.c',
-        'src/core/lib/iomgr/ev_posix.c',
-        'src/core/lib/iomgr/ev_windows.c',
-        'src/core/lib/iomgr/exec_ctx.c',
-        'src/core/lib/iomgr/executor.c',
-        'src/core/lib/iomgr/gethostname_fallback.c',
-        'src/core/lib/iomgr/gethostname_host_name_max.c',
-        'src/core/lib/iomgr/gethostname_sysconf.c',
-        'src/core/lib/iomgr/iocp_windows.c',
-        'src/core/lib/iomgr/iomgr.c',
-        'src/core/lib/iomgr/iomgr_posix.c',
-        'src/core/lib/iomgr/iomgr_uv.c',
-        'src/core/lib/iomgr/iomgr_windows.c',
-        'src/core/lib/iomgr/is_epollexclusive_available.c',
-        'src/core/lib/iomgr/load_file.c',
-        'src/core/lib/iomgr/lockfree_event.c',
-        'src/core/lib/iomgr/network_status_tracker.c',
-        'src/core/lib/iomgr/polling_entity.c',
-        'src/core/lib/iomgr/pollset_set_uv.c',
-        'src/core/lib/iomgr/pollset_set_windows.c',
-        'src/core/lib/iomgr/pollset_uv.c',
-        'src/core/lib/iomgr/pollset_windows.c',
-        'src/core/lib/iomgr/resolve_address_posix.c',
-        'src/core/lib/iomgr/resolve_address_uv.c',
-        'src/core/lib/iomgr/resolve_address_windows.c',
-        'src/core/lib/iomgr/resource_quota.c',
-        'src/core/lib/iomgr/sockaddr_utils.c',
-        'src/core/lib/iomgr/socket_factory_posix.c',
-        'src/core/lib/iomgr/socket_mutator.c',
-        'src/core/lib/iomgr/socket_utils_common_posix.c',
-        'src/core/lib/iomgr/socket_utils_linux.c',
-        'src/core/lib/iomgr/socket_utils_posix.c',
-        'src/core/lib/iomgr/socket_utils_uv.c',
-        'src/core/lib/iomgr/socket_utils_windows.c',
-        'src/core/lib/iomgr/socket_windows.c',
-        'src/core/lib/iomgr/tcp_client_posix.c',
-        'src/core/lib/iomgr/tcp_client_uv.c',
-        'src/core/lib/iomgr/tcp_client_windows.c',
-        'src/core/lib/iomgr/tcp_posix.c',
-        'src/core/lib/iomgr/tcp_server_posix.c',
-        'src/core/lib/iomgr/tcp_server_utils_posix_common.c',
-        'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c',
-        'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c',
-        'src/core/lib/iomgr/tcp_server_uv.c',
-        'src/core/lib/iomgr/tcp_server_windows.c',
-        'src/core/lib/iomgr/tcp_uv.c',
-        'src/core/lib/iomgr/tcp_windows.c',
-        'src/core/lib/iomgr/time_averaged_stats.c',
-        'src/core/lib/iomgr/timer_generic.c',
-        'src/core/lib/iomgr/timer_heap.c',
-        'src/core/lib/iomgr/timer_manager.c',
-        'src/core/lib/iomgr/timer_uv.c',
-        'src/core/lib/iomgr/udp_server.c',
-        'src/core/lib/iomgr/unix_sockets_posix.c',
-        'src/core/lib/iomgr/unix_sockets_posix_noop.c',
-        'src/core/lib/iomgr/wakeup_fd_cv.c',
-        'src/core/lib/iomgr/wakeup_fd_eventfd.c',
-        'src/core/lib/iomgr/wakeup_fd_nospecial.c',
-        'src/core/lib/iomgr/wakeup_fd_pipe.c',
-        'src/core/lib/iomgr/wakeup_fd_posix.c',
-        'src/core/lib/json/json.c',
-        'src/core/lib/json/json_reader.c',
-        'src/core/lib/json/json_string.c',
-        'src/core/lib/json/json_writer.c',
-        'src/core/lib/slice/b64.c',
-        'src/core/lib/slice/percent_encoding.c',
-        'src/core/lib/slice/slice.c',
-        'src/core/lib/slice/slice_buffer.c',
-        'src/core/lib/slice/slice_hash_table.c',
-        'src/core/lib/slice/slice_intern.c',
-        'src/core/lib/slice/slice_string_helpers.c',
-        'src/core/lib/surface/alarm.c',
-        'src/core/lib/surface/api_trace.c',
-        'src/core/lib/surface/byte_buffer.c',
-        'src/core/lib/surface/byte_buffer_reader.c',
-        'src/core/lib/surface/call.c',
-        'src/core/lib/surface/call_details.c',
-        'src/core/lib/surface/call_log_batch.c',
-        'src/core/lib/surface/channel.c',
-        'src/core/lib/surface/channel_init.c',
-        'src/core/lib/surface/channel_ping.c',
-        'src/core/lib/surface/channel_stack_type.c',
-        'src/core/lib/surface/completion_queue.c',
-        'src/core/lib/surface/completion_queue_factory.c',
-        'src/core/lib/surface/event_string.c',
+        'src/core/lib/surface/init.cc',
+        'src/core/lib/channel/channel_args.cc',
+        'src/core/lib/channel/channel_stack.cc',
+        'src/core/lib/channel/channel_stack_builder.cc',
+        'src/core/lib/channel/connected_channel.cc',
+        'src/core/lib/channel/handshaker.cc',
+        'src/core/lib/channel/handshaker_factory.cc',
+        'src/core/lib/channel/handshaker_registry.cc',
+        'src/core/lib/compression/compression.cc',
+        'src/core/lib/compression/message_compress.cc',
+        'src/core/lib/compression/stream_compression.cc',
+        'src/core/lib/compression/stream_compression_gzip.cc',
+        'src/core/lib/compression/stream_compression_identity.cc',
+        'src/core/lib/debug/stats.cc',
+        'src/core/lib/debug/stats_data.cc',
+        'src/core/lib/http/format_request.cc',
+        'src/core/lib/http/httpcli.cc',
+        'src/core/lib/http/parser.cc',
+        'src/core/lib/iomgr/call_combiner.cc',
+        'src/core/lib/iomgr/closure.cc',
+        'src/core/lib/iomgr/combiner.cc',
+        'src/core/lib/iomgr/endpoint.cc',
+        'src/core/lib/iomgr/endpoint_pair_posix.cc',
+        'src/core/lib/iomgr/endpoint_pair_uv.cc',
+        'src/core/lib/iomgr/endpoint_pair_windows.cc',
+        'src/core/lib/iomgr/error.cc',
+        'src/core/lib/iomgr/ev_epoll1_linux.cc',
+        'src/core/lib/iomgr/ev_epollex_linux.cc',
+        'src/core/lib/iomgr/ev_epollsig_linux.cc',
+        'src/core/lib/iomgr/ev_poll_posix.cc',
+        'src/core/lib/iomgr/ev_posix.cc',
+        'src/core/lib/iomgr/ev_windows.cc',
+        'src/core/lib/iomgr/exec_ctx.cc',
+        'src/core/lib/iomgr/executor.cc',
+        'src/core/lib/iomgr/gethostname_fallback.cc',
+        'src/core/lib/iomgr/gethostname_host_name_max.cc',
+        'src/core/lib/iomgr/gethostname_sysconf.cc',
+        'src/core/lib/iomgr/iocp_windows.cc',
+        'src/core/lib/iomgr/iomgr.cc',
+        'src/core/lib/iomgr/iomgr_posix.cc',
+        'src/core/lib/iomgr/iomgr_uv.cc',
+        'src/core/lib/iomgr/iomgr_windows.cc',
+        'src/core/lib/iomgr/is_epollexclusive_available.cc',
+        'src/core/lib/iomgr/load_file.cc',
+        'src/core/lib/iomgr/lockfree_event.cc',
+        'src/core/lib/iomgr/network_status_tracker.cc',
+        'src/core/lib/iomgr/polling_entity.cc',
+        'src/core/lib/iomgr/pollset_set_uv.cc',
+        'src/core/lib/iomgr/pollset_set_windows.cc',
+        'src/core/lib/iomgr/pollset_uv.cc',
+        'src/core/lib/iomgr/pollset_windows.cc',
+        'src/core/lib/iomgr/resolve_address_posix.cc',
+        'src/core/lib/iomgr/resolve_address_uv.cc',
+        'src/core/lib/iomgr/resolve_address_windows.cc',
+        'src/core/lib/iomgr/resource_quota.cc',
+        'src/core/lib/iomgr/sockaddr_utils.cc',
+        'src/core/lib/iomgr/socket_factory_posix.cc',
+        'src/core/lib/iomgr/socket_mutator.cc',
+        'src/core/lib/iomgr/socket_utils_common_posix.cc',
+        'src/core/lib/iomgr/socket_utils_linux.cc',
+        'src/core/lib/iomgr/socket_utils_posix.cc',
+        'src/core/lib/iomgr/socket_utils_uv.cc',
+        'src/core/lib/iomgr/socket_utils_windows.cc',
+        'src/core/lib/iomgr/socket_windows.cc',
+        'src/core/lib/iomgr/tcp_client_posix.cc',
+        'src/core/lib/iomgr/tcp_client_uv.cc',
+        'src/core/lib/iomgr/tcp_client_windows.cc',
+        'src/core/lib/iomgr/tcp_posix.cc',
+        'src/core/lib/iomgr/tcp_server_posix.cc',
+        'src/core/lib/iomgr/tcp_server_utils_posix_common.cc',
+        'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc',
+        'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc',
+        'src/core/lib/iomgr/tcp_server_uv.cc',
+        'src/core/lib/iomgr/tcp_server_windows.cc',
+        'src/core/lib/iomgr/tcp_uv.cc',
+        'src/core/lib/iomgr/tcp_windows.cc',
+        'src/core/lib/iomgr/time_averaged_stats.cc',
+        'src/core/lib/iomgr/timer_generic.cc',
+        'src/core/lib/iomgr/timer_heap.cc',
+        'src/core/lib/iomgr/timer_manager.cc',
+        'src/core/lib/iomgr/timer_uv.cc',
+        'src/core/lib/iomgr/udp_server.cc',
+        'src/core/lib/iomgr/unix_sockets_posix.cc',
+        'src/core/lib/iomgr/unix_sockets_posix_noop.cc',
+        'src/core/lib/iomgr/wakeup_fd_cv.cc',
+        'src/core/lib/iomgr/wakeup_fd_eventfd.cc',
+        'src/core/lib/iomgr/wakeup_fd_nospecial.cc',
+        'src/core/lib/iomgr/wakeup_fd_pipe.cc',
+        'src/core/lib/iomgr/wakeup_fd_posix.cc',
+        'src/core/lib/json/json.cc',
+        'src/core/lib/json/json_reader.cc',
+        'src/core/lib/json/json_string.cc',
+        'src/core/lib/json/json_writer.cc',
+        'src/core/lib/slice/b64.cc',
+        'src/core/lib/slice/percent_encoding.cc',
+        'src/core/lib/slice/slice.cc',
+        'src/core/lib/slice/slice_buffer.cc',
+        'src/core/lib/slice/slice_hash_table.cc',
+        'src/core/lib/slice/slice_intern.cc',
+        'src/core/lib/slice/slice_string_helpers.cc',
+        'src/core/lib/surface/alarm.cc',
+        'src/core/lib/surface/api_trace.cc',
+        'src/core/lib/surface/byte_buffer.cc',
+        'src/core/lib/surface/byte_buffer_reader.cc',
+        'src/core/lib/surface/call.cc',
+        'src/core/lib/surface/call_details.cc',
+        'src/core/lib/surface/call_log_batch.cc',
+        'src/core/lib/surface/channel.cc',
+        'src/core/lib/surface/channel_init.cc',
+        'src/core/lib/surface/channel_ping.cc',
+        'src/core/lib/surface/channel_stack_type.cc',
+        'src/core/lib/surface/completion_queue.cc',
+        'src/core/lib/surface/completion_queue_factory.cc',
+        'src/core/lib/surface/event_string.cc',
         'src/core/lib/surface/lame_client.cc',
-        'src/core/lib/surface/metadata_array.c',
-        'src/core/lib/surface/server.c',
-        'src/core/lib/surface/validate_metadata.c',
-        'src/core/lib/surface/version.c',
-        'src/core/lib/transport/bdp_estimator.c',
-        'src/core/lib/transport/byte_stream.c',
-        'src/core/lib/transport/connectivity_state.c',
-        'src/core/lib/transport/error_utils.c',
-        'src/core/lib/transport/metadata.c',
-        'src/core/lib/transport/metadata_batch.c',
-        'src/core/lib/transport/pid_controller.c',
-        'src/core/lib/transport/service_config.c',
-        'src/core/lib/transport/static_metadata.c',
-        'src/core/lib/transport/status_conversion.c',
-        'src/core/lib/transport/timeout_encoding.c',
-        'src/core/lib/transport/transport.c',
-        'src/core/lib/transport/transport_op_string.c',
-        'src/core/lib/debug/trace.c',
-        'src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c',
-        'src/core/ext/transport/chttp2/transport/bin_decoder.c',
-        'src/core/ext/transport/chttp2/transport/bin_encoder.c',
-        'src/core/ext/transport/chttp2/transport/chttp2_plugin.c',
-        'src/core/ext/transport/chttp2/transport/chttp2_transport.c',
-        'src/core/ext/transport/chttp2/transport/flow_control.c',
-        'src/core/ext/transport/chttp2/transport/frame_data.c',
-        'src/core/ext/transport/chttp2/transport/frame_goaway.c',
-        'src/core/ext/transport/chttp2/transport/frame_ping.c',
-        'src/core/ext/transport/chttp2/transport/frame_rst_stream.c',
-        'src/core/ext/transport/chttp2/transport/frame_settings.c',
-        'src/core/ext/transport/chttp2/transport/frame_window_update.c',
-        'src/core/ext/transport/chttp2/transport/hpack_encoder.c',
-        'src/core/ext/transport/chttp2/transport/hpack_parser.c',
-        'src/core/ext/transport/chttp2/transport/hpack_table.c',
-        'src/core/ext/transport/chttp2/transport/http2_settings.c',
-        'src/core/ext/transport/chttp2/transport/huffsyms.c',
-        'src/core/ext/transport/chttp2/transport/incoming_metadata.c',
-        'src/core/ext/transport/chttp2/transport/parsing.c',
-        'src/core/ext/transport/chttp2/transport/stream_lists.c',
-        'src/core/ext/transport/chttp2/transport/stream_map.c',
-        'src/core/ext/transport/chttp2/transport/varint.c',
-        'src/core/ext/transport/chttp2/transport/writing.c',
-        'src/core/ext/transport/chttp2/alpn/alpn.c',
-        'src/core/ext/filters/http/client/http_client_filter.c',
-        'src/core/ext/filters/http/http_filters_plugin.c',
-        'src/core/ext/filters/http/message_compress/message_compress_filter.c',
-        'src/core/ext/filters/http/server/http_server_filter.c',
-        'src/core/lib/http/httpcli_security_connector.c',
-        'src/core/lib/security/context/security_context.c',
-        'src/core/lib/security/credentials/composite/composite_credentials.c',
-        'src/core/lib/security/credentials/credentials.c',
-        'src/core/lib/security/credentials/credentials_metadata.c',
-        'src/core/lib/security/credentials/fake/fake_credentials.c',
-        'src/core/lib/security/credentials/google_default/credentials_generic.c',
-        'src/core/lib/security/credentials/google_default/google_default_credentials.c',
-        'src/core/lib/security/credentials/iam/iam_credentials.c',
-        'src/core/lib/security/credentials/jwt/json_token.c',
-        'src/core/lib/security/credentials/jwt/jwt_credentials.c',
-        'src/core/lib/security/credentials/jwt/jwt_verifier.c',
-        'src/core/lib/security/credentials/oauth2/oauth2_credentials.c',
-        'src/core/lib/security/credentials/plugin/plugin_credentials.c',
-        'src/core/lib/security/credentials/ssl/ssl_credentials.c',
-        'src/core/lib/security/transport/client_auth_filter.c',
-        'src/core/lib/security/transport/lb_targets_info.c',
-        'src/core/lib/security/transport/secure_endpoint.c',
-        'src/core/lib/security/transport/security_connector.c',
-        'src/core/lib/security/transport/security_handshaker.c',
-        'src/core/lib/security/transport/server_auth_filter.c',
-        'src/core/lib/security/transport/tsi_error.c',
-        'src/core/lib/security/util/json_util.c',
-        'src/core/lib/surface/init_secure.c',
-        'src/core/tsi/fake_transport_security.c',
-        'src/core/tsi/gts_transport_security.c',
-        'src/core/tsi/ssl_transport_security.c',
-        'src/core/tsi/transport_security_grpc.c',
-        'src/core/tsi/transport_security.c',
-        'src/core/tsi/transport_security_adapter.c',
-        'src/core/ext/transport/chttp2/server/chttp2_server.c',
-        'src/core/ext/transport/chttp2/client/secure/secure_channel_create.c',
-        'src/core/ext/filters/client_channel/channel_connectivity.c',
-        'src/core/ext/filters/client_channel/client_channel.c',
-        'src/core/ext/filters/client_channel/client_channel_factory.c',
-        'src/core/ext/filters/client_channel/client_channel_plugin.c',
-        'src/core/ext/filters/client_channel/connector.c',
-        'src/core/ext/filters/client_channel/http_connect_handshaker.c',
-        'src/core/ext/filters/client_channel/http_proxy.c',
-        'src/core/ext/filters/client_channel/lb_policy.c',
-        'src/core/ext/filters/client_channel/lb_policy_factory.c',
-        'src/core/ext/filters/client_channel/lb_policy_registry.c',
-        'src/core/ext/filters/client_channel/parse_address.c',
-        'src/core/ext/filters/client_channel/proxy_mapper.c',
-        'src/core/ext/filters/client_channel/proxy_mapper_registry.c',
-        'src/core/ext/filters/client_channel/resolver.c',
-        'src/core/ext/filters/client_channel/resolver_factory.c',
-        'src/core/ext/filters/client_channel/resolver_registry.c',
-        'src/core/ext/filters/client_channel/retry_throttle.c',
-        'src/core/ext/filters/client_channel/subchannel.c',
-        'src/core/ext/filters/client_channel/subchannel_index.c',
-        'src/core/ext/filters/client_channel/uri_parser.c',
-        'src/core/ext/filters/deadline/deadline_filter.c',
-        'src/core/ext/transport/chttp2/client/chttp2_connector.c',
-        'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
-        'src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c',
-        'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
-        'src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c',
-        'src/core/ext/transport/inproc/inproc_plugin.c',
-        'src/core/ext/transport/inproc/inproc_transport.c',
-        'src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c',
-        'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c',
-        'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c',
-        'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c',
-        'src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c',
+        'src/core/lib/surface/metadata_array.cc',
+        'src/core/lib/surface/server.cc',
+        'src/core/lib/surface/validate_metadata.cc',
+        'src/core/lib/surface/version.cc',
+        'src/core/lib/transport/bdp_estimator.cc',
+        'src/core/lib/transport/byte_stream.cc',
+        'src/core/lib/transport/connectivity_state.cc',
+        'src/core/lib/transport/error_utils.cc',
+        'src/core/lib/transport/metadata.cc',
+        'src/core/lib/transport/metadata_batch.cc',
+        'src/core/lib/transport/pid_controller.cc',
+        'src/core/lib/transport/service_config.cc',
+        'src/core/lib/transport/static_metadata.cc',
+        'src/core/lib/transport/status_conversion.cc',
+        'src/core/lib/transport/timeout_encoding.cc',
+        'src/core/lib/transport/transport.cc',
+        'src/core/lib/transport/transport_op_string.cc',
+        'src/core/lib/debug/trace.cc',
+        'src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc',
+        'src/core/ext/transport/chttp2/transport/bin_decoder.cc',
+        'src/core/ext/transport/chttp2/transport/bin_encoder.cc',
+        'src/core/ext/transport/chttp2/transport/chttp2_plugin.cc',
+        'src/core/ext/transport/chttp2/transport/chttp2_transport.cc',
+        'src/core/ext/transport/chttp2/transport/flow_control.cc',
+        'src/core/ext/transport/chttp2/transport/frame_data.cc',
+        'src/core/ext/transport/chttp2/transport/frame_goaway.cc',
+        'src/core/ext/transport/chttp2/transport/frame_ping.cc',
+        'src/core/ext/transport/chttp2/transport/frame_rst_stream.cc',
+        'src/core/ext/transport/chttp2/transport/frame_settings.cc',
+        'src/core/ext/transport/chttp2/transport/frame_window_update.cc',
+        'src/core/ext/transport/chttp2/transport/hpack_encoder.cc',
+        'src/core/ext/transport/chttp2/transport/hpack_parser.cc',
+        'src/core/ext/transport/chttp2/transport/hpack_table.cc',
+        'src/core/ext/transport/chttp2/transport/http2_settings.cc',
+        'src/core/ext/transport/chttp2/transport/huffsyms.cc',
+        'src/core/ext/transport/chttp2/transport/incoming_metadata.cc',
+        'src/core/ext/transport/chttp2/transport/parsing.cc',
+        'src/core/ext/transport/chttp2/transport/stream_lists.cc',
+        'src/core/ext/transport/chttp2/transport/stream_map.cc',
+        'src/core/ext/transport/chttp2/transport/varint.cc',
+        'src/core/ext/transport/chttp2/transport/writing.cc',
+        'src/core/ext/transport/chttp2/alpn/alpn.cc',
+        'src/core/ext/filters/http/client/http_client_filter.cc',
+        'src/core/ext/filters/http/http_filters_plugin.cc',
+        'src/core/ext/filters/http/message_compress/message_compress_filter.cc',
+        'src/core/ext/filters/http/server/http_server_filter.cc',
+        'src/core/lib/http/httpcli_security_connector.cc',
+        'src/core/lib/security/context/security_context.cc',
+        'src/core/lib/security/credentials/composite/composite_credentials.cc',
+        'src/core/lib/security/credentials/credentials.cc',
+        'src/core/lib/security/credentials/credentials_metadata.cc',
+        'src/core/lib/security/credentials/fake/fake_credentials.cc',
+        'src/core/lib/security/credentials/google_default/credentials_generic.cc',
+        'src/core/lib/security/credentials/google_default/google_default_credentials.cc',
+        'src/core/lib/security/credentials/iam/iam_credentials.cc',
+        'src/core/lib/security/credentials/jwt/json_token.cc',
+        'src/core/lib/security/credentials/jwt/jwt_credentials.cc',
+        'src/core/lib/security/credentials/jwt/jwt_verifier.cc',
+        'src/core/lib/security/credentials/oauth2/oauth2_credentials.cc',
+        'src/core/lib/security/credentials/plugin/plugin_credentials.cc',
+        'src/core/lib/security/credentials/ssl/ssl_credentials.cc',
+        'src/core/lib/security/transport/client_auth_filter.cc',
+        'src/core/lib/security/transport/lb_targets_info.cc',
+        'src/core/lib/security/transport/secure_endpoint.cc',
+        'src/core/lib/security/transport/security_connector.cc',
+        'src/core/lib/security/transport/security_handshaker.cc',
+        'src/core/lib/security/transport/server_auth_filter.cc',
+        'src/core/lib/security/transport/tsi_error.cc',
+        'src/core/lib/security/util/json_util.cc',
+        'src/core/lib/surface/init_secure.cc',
+        'src/core/tsi/fake_transport_security.cc',
+        'src/core/tsi/gts_transport_security.cc',
+        'src/core/tsi/ssl_transport_security.cc',
+        'src/core/tsi/transport_security_grpc.cc',
+        'src/core/tsi/transport_security.cc',
+        'src/core/tsi/transport_security_adapter.cc',
+        'src/core/ext/transport/chttp2/server/chttp2_server.cc',
+        'src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc',
+        'src/core/ext/filters/client_channel/channel_connectivity.cc',
+        'src/core/ext/filters/client_channel/client_channel.cc',
+        'src/core/ext/filters/client_channel/client_channel_factory.cc',
+        'src/core/ext/filters/client_channel/client_channel_plugin.cc',
+        'src/core/ext/filters/client_channel/connector.cc',
+        'src/core/ext/filters/client_channel/http_connect_handshaker.cc',
+        'src/core/ext/filters/client_channel/http_proxy.cc',
+        'src/core/ext/filters/client_channel/lb_policy.cc',
+        'src/core/ext/filters/client_channel/lb_policy_factory.cc',
+        'src/core/ext/filters/client_channel/lb_policy_registry.cc',
+        'src/core/ext/filters/client_channel/parse_address.cc',
+        'src/core/ext/filters/client_channel/proxy_mapper.cc',
+        'src/core/ext/filters/client_channel/proxy_mapper_registry.cc',
+        'src/core/ext/filters/client_channel/resolver.cc',
+        'src/core/ext/filters/client_channel/resolver_factory.cc',
+        'src/core/ext/filters/client_channel/resolver_registry.cc',
+        'src/core/ext/filters/client_channel/retry_throttle.cc',
+        'src/core/ext/filters/client_channel/subchannel.cc',
+        'src/core/ext/filters/client_channel/subchannel_index.cc',
+        'src/core/ext/filters/client_channel/uri_parser.cc',
+        'src/core/ext/filters/deadline/deadline_filter.cc',
+        'src/core/ext/transport/chttp2/client/chttp2_connector.cc',
+        'src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc',
+        'src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc',
+        'src/core/ext/transport/chttp2/client/insecure/channel_create.cc',
+        'src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc',
+        'src/core/ext/transport/inproc/inproc_plugin.cc',
+        'src/core/ext/transport/inproc/inproc_transport.cc',
+        'src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc',
+        'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc',
+        'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc',
+        'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc',
+        'src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc',
         'src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c',
         'third_party/nanopb/pb_common.c',
         'third_party/nanopb/pb_decode.c',
         'third_party/nanopb/pb_encode.c',
-        'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c',
-        'src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c',
-        'src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c',
-        'src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c',
-        'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c',
-        'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c',
-        'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c',
-        'src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c',
-        'src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c',
-        'src/core/ext/filters/load_reporting/server_load_reporting_filter.c',
-        'src/core/ext/filters/load_reporting/server_load_reporting_plugin.c',
-        'src/core/ext/census/base_resources.c',
-        'src/core/ext/census/context.c',
+        'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc',
+        'src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc',
+        'src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc',
+        'src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc',
+        'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc',
+        'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc',
+        'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc',
+        'src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc',
+        'src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc',
+        'src/core/ext/filters/load_reporting/server_load_reporting_filter.cc',
+        'src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc',
+        'src/core/ext/census/base_resources.cc',
+        'src/core/ext/census/context.cc',
         'src/core/ext/census/gen/census.pb.c',
         'src/core/ext/census/gen/trace_context.pb.c',
-        'src/core/ext/census/grpc_context.c',
-        'src/core/ext/census/grpc_filter.c',
-        'src/core/ext/census/grpc_plugin.c',
-        'src/core/ext/census/initialize.c',
-        'src/core/ext/census/intrusive_hash_map.c',
-        'src/core/ext/census/mlog.c',
-        'src/core/ext/census/operation.c',
-        'src/core/ext/census/placeholders.c',
-        'src/core/ext/census/resource.c',
-        'src/core/ext/census/trace_context.c',
-        'src/core/ext/census/tracing.c',
-        'src/core/ext/filters/max_age/max_age_filter.c',
-        'src/core/ext/filters/message_size/message_size_filter.c',
-        'src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c',
-        'src/core/ext/filters/workarounds/workaround_utils.c',
-        'src/core/plugin_registry/grpc_plugin_registry.c',
+        'src/core/ext/census/grpc_context.cc',
+        'src/core/ext/census/grpc_filter.cc',
+        'src/core/ext/census/grpc_plugin.cc',
+        'src/core/ext/census/initialize.cc',
+        'src/core/ext/census/intrusive_hash_map.cc',
+        'src/core/ext/census/mlog.cc',
+        'src/core/ext/census/operation.cc',
+        'src/core/ext/census/placeholders.cc',
+        'src/core/ext/census/resource.cc',
+        'src/core/ext/census/trace_context.cc',
+        'src/core/ext/census/tracing.cc',
+        'src/core/ext/filters/max_age/max_age_filter.cc',
+        'src/core/ext/filters/message_size/message_size_filter.cc',
+        'src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc',
+        'src/core/ext/filters/workarounds/workaround_utils.cc',
+        'src/core/plugin_registry/grpc_plugin_registry.cc',
       ],
       'conditions': [
         ['OS == "mac"', {
diff --git a/build.yaml b/build.yaml
index 9b5aacc..7033d52 100644
--- a/build.yaml
+++ b/build.yaml
@@ -13,8 +13,8 @@
   '#09': Per-language overrides are possible with (eg) ruby_version tag here
   '#10': See the expand_version.py for all the quirks here
   core_version: 5.0.0-dev
-  g_stands_for: gambit
-  version: 1.7.0-dev
+  g_stands_for: generous
+  version: 1.8.0-dev
 filegroups:
 - name: census
   public_headers:
@@ -39,73 +39,73 @@
   - src/core/ext/census/trace_string.h
   - src/core/ext/census/tracing.h
   src:
-  - src/core/ext/census/base_resources.c
-  - src/core/ext/census/context.c
+  - src/core/ext/census/base_resources.cc
+  - src/core/ext/census/context.cc
   - src/core/ext/census/gen/census.pb.c
   - src/core/ext/census/gen/trace_context.pb.c
-  - src/core/ext/census/grpc_context.c
-  - src/core/ext/census/grpc_filter.c
-  - src/core/ext/census/grpc_plugin.c
-  - src/core/ext/census/initialize.c
-  - src/core/ext/census/intrusive_hash_map.c
-  - src/core/ext/census/mlog.c
-  - src/core/ext/census/operation.c
-  - src/core/ext/census/placeholders.c
-  - src/core/ext/census/resource.c
-  - src/core/ext/census/trace_context.c
-  - src/core/ext/census/tracing.c
+  - src/core/ext/census/grpc_context.cc
+  - src/core/ext/census/grpc_filter.cc
+  - src/core/ext/census/grpc_plugin.cc
+  - src/core/ext/census/initialize.cc
+  - src/core/ext/census/intrusive_hash_map.cc
+  - src/core/ext/census/mlog.cc
+  - src/core/ext/census/operation.cc
+  - src/core/ext/census/placeholders.cc
+  - src/core/ext/census/resource.cc
+  - src/core/ext/census/trace_context.cc
+  - src/core/ext/census/tracing.cc
   plugin: census_grpc_plugin
   uses:
   - grpc_base
   - nanopb
 - name: gpr_base
   src:
-  - src/core/lib/profiling/basic_timers.c
-  - src/core/lib/profiling/stap_timers.c
-  - src/core/lib/support/alloc.c
-  - src/core/lib/support/arena.c
-  - src/core/lib/support/atm.c
-  - src/core/lib/support/avl.c
-  - src/core/lib/support/backoff.c
-  - src/core/lib/support/cmdline.c
-  - src/core/lib/support/cpu_iphone.c
-  - src/core/lib/support/cpu_linux.c
-  - src/core/lib/support/cpu_posix.c
-  - src/core/lib/support/cpu_windows.c
-  - src/core/lib/support/env_linux.c
-  - src/core/lib/support/env_posix.c
-  - src/core/lib/support/env_windows.c
-  - src/core/lib/support/histogram.c
-  - src/core/lib/support/host_port.c
-  - src/core/lib/support/log.c
-  - src/core/lib/support/log_android.c
-  - src/core/lib/support/log_linux.c
-  - src/core/lib/support/log_posix.c
-  - src/core/lib/support/log_windows.c
-  - src/core/lib/support/mpscq.c
-  - src/core/lib/support/murmur_hash.c
-  - src/core/lib/support/stack_lockfree.c
-  - src/core/lib/support/string.c
-  - src/core/lib/support/string_posix.c
-  - src/core/lib/support/string_util_windows.c
-  - src/core/lib/support/string_windows.c
-  - src/core/lib/support/subprocess_posix.c
-  - src/core/lib/support/subprocess_windows.c
-  - src/core/lib/support/sync.c
-  - src/core/lib/support/sync_posix.c
-  - src/core/lib/support/sync_windows.c
-  - src/core/lib/support/thd.c
-  - src/core/lib/support/thd_posix.c
-  - src/core/lib/support/thd_windows.c
-  - src/core/lib/support/time.c
-  - src/core/lib/support/time_posix.c
-  - src/core/lib/support/time_precise.c
-  - src/core/lib/support/time_windows.c
-  - src/core/lib/support/tls_pthread.c
-  - src/core/lib/support/tmpfile_msys.c
-  - src/core/lib/support/tmpfile_posix.c
-  - src/core/lib/support/tmpfile_windows.c
-  - src/core/lib/support/wrap_memcpy.c
+  - src/core/lib/profiling/basic_timers.cc
+  - src/core/lib/profiling/stap_timers.cc
+  - src/core/lib/support/alloc.cc
+  - src/core/lib/support/arena.cc
+  - src/core/lib/support/atm.cc
+  - src/core/lib/support/avl.cc
+  - src/core/lib/support/backoff.cc
+  - src/core/lib/support/cmdline.cc
+  - src/core/lib/support/cpu_iphone.cc
+  - src/core/lib/support/cpu_linux.cc
+  - src/core/lib/support/cpu_posix.cc
+  - src/core/lib/support/cpu_windows.cc
+  - src/core/lib/support/env_linux.cc
+  - src/core/lib/support/env_posix.cc
+  - src/core/lib/support/env_windows.cc
+  - src/core/lib/support/histogram.cc
+  - src/core/lib/support/host_port.cc
+  - src/core/lib/support/log.cc
+  - src/core/lib/support/log_android.cc
+  - src/core/lib/support/log_linux.cc
+  - src/core/lib/support/log_posix.cc
+  - src/core/lib/support/log_windows.cc
+  - src/core/lib/support/mpscq.cc
+  - src/core/lib/support/murmur_hash.cc
+  - src/core/lib/support/stack_lockfree.cc
+  - src/core/lib/support/string.cc
+  - src/core/lib/support/string_posix.cc
+  - src/core/lib/support/string_util_windows.cc
+  - src/core/lib/support/string_windows.cc
+  - src/core/lib/support/subprocess_posix.cc
+  - src/core/lib/support/subprocess_windows.cc
+  - src/core/lib/support/sync.cc
+  - src/core/lib/support/sync_posix.cc
+  - src/core/lib/support/sync_windows.cc
+  - src/core/lib/support/thd.cc
+  - src/core/lib/support/thd_posix.cc
+  - src/core/lib/support/thd_windows.cc
+  - src/core/lib/support/time.cc
+  - src/core/lib/support/time_posix.cc
+  - src/core/lib/support/time_precise.cc
+  - src/core/lib/support/time_windows.cc
+  - src/core/lib/support/tls_pthread.cc
+  - src/core/lib/support/tmpfile_msys.cc
+  - src/core/lib/support/tmpfile_posix.cc
+  - src/core/lib/support/tmpfile_windows.cc
+  - src/core/lib/support/wrap_memcpy.cc
   uses:
   - gpr_base_headers
 - name: gpr_base_headers
@@ -185,137 +185,137 @@
   - grpc++_codegen_base
 - name: grpc_base
   src:
-  - src/core/lib/channel/channel_args.c
-  - src/core/lib/channel/channel_stack.c
-  - src/core/lib/channel/channel_stack_builder.c
-  - src/core/lib/channel/connected_channel.c
-  - src/core/lib/channel/handshaker.c
-  - src/core/lib/channel/handshaker_factory.c
-  - src/core/lib/channel/handshaker_registry.c
-  - src/core/lib/compression/compression.c
-  - src/core/lib/compression/message_compress.c
-  - src/core/lib/compression/stream_compression.c
-  - src/core/lib/compression/stream_compression_gzip.c
-  - src/core/lib/compression/stream_compression_identity.c
-  - src/core/lib/debug/stats.c
-  - src/core/lib/debug/stats_data.c
-  - src/core/lib/http/format_request.c
-  - src/core/lib/http/httpcli.c
-  - src/core/lib/http/parser.c
-  - src/core/lib/iomgr/call_combiner.c
-  - src/core/lib/iomgr/closure.c
-  - src/core/lib/iomgr/combiner.c
-  - src/core/lib/iomgr/endpoint.c
-  - src/core/lib/iomgr/endpoint_pair_posix.c
-  - src/core/lib/iomgr/endpoint_pair_uv.c
-  - src/core/lib/iomgr/endpoint_pair_windows.c
-  - src/core/lib/iomgr/error.c
-  - src/core/lib/iomgr/ev_epoll1_linux.c
-  - src/core/lib/iomgr/ev_epollex_linux.c
-  - src/core/lib/iomgr/ev_epollsig_linux.c
-  - src/core/lib/iomgr/ev_poll_posix.c
-  - src/core/lib/iomgr/ev_posix.c
-  - src/core/lib/iomgr/ev_windows.c
-  - src/core/lib/iomgr/exec_ctx.c
-  - src/core/lib/iomgr/executor.c
-  - src/core/lib/iomgr/gethostname_fallback.c
-  - src/core/lib/iomgr/gethostname_host_name_max.c
-  - src/core/lib/iomgr/gethostname_sysconf.c
-  - src/core/lib/iomgr/iocp_windows.c
-  - src/core/lib/iomgr/iomgr.c
-  - src/core/lib/iomgr/iomgr_posix.c
-  - src/core/lib/iomgr/iomgr_uv.c
-  - src/core/lib/iomgr/iomgr_windows.c
-  - src/core/lib/iomgr/is_epollexclusive_available.c
-  - src/core/lib/iomgr/load_file.c
-  - src/core/lib/iomgr/lockfree_event.c
-  - src/core/lib/iomgr/network_status_tracker.c
-  - src/core/lib/iomgr/polling_entity.c
-  - src/core/lib/iomgr/pollset_set_uv.c
-  - src/core/lib/iomgr/pollset_set_windows.c
-  - src/core/lib/iomgr/pollset_uv.c
-  - src/core/lib/iomgr/pollset_windows.c
-  - src/core/lib/iomgr/resolve_address_posix.c
-  - src/core/lib/iomgr/resolve_address_uv.c
-  - src/core/lib/iomgr/resolve_address_windows.c
-  - src/core/lib/iomgr/resource_quota.c
-  - src/core/lib/iomgr/sockaddr_utils.c
-  - src/core/lib/iomgr/socket_factory_posix.c
-  - src/core/lib/iomgr/socket_mutator.c
-  - src/core/lib/iomgr/socket_utils_common_posix.c
-  - src/core/lib/iomgr/socket_utils_linux.c
-  - src/core/lib/iomgr/socket_utils_posix.c
-  - src/core/lib/iomgr/socket_utils_uv.c
-  - src/core/lib/iomgr/socket_utils_windows.c
-  - src/core/lib/iomgr/socket_windows.c
-  - src/core/lib/iomgr/tcp_client_posix.c
-  - src/core/lib/iomgr/tcp_client_uv.c
-  - src/core/lib/iomgr/tcp_client_windows.c
-  - src/core/lib/iomgr/tcp_posix.c
-  - src/core/lib/iomgr/tcp_server_posix.c
-  - src/core/lib/iomgr/tcp_server_utils_posix_common.c
-  - src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c
-  - src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c
-  - src/core/lib/iomgr/tcp_server_uv.c
-  - src/core/lib/iomgr/tcp_server_windows.c
-  - src/core/lib/iomgr/tcp_uv.c
-  - src/core/lib/iomgr/tcp_windows.c
-  - src/core/lib/iomgr/time_averaged_stats.c
-  - src/core/lib/iomgr/timer_generic.c
-  - src/core/lib/iomgr/timer_heap.c
-  - src/core/lib/iomgr/timer_manager.c
-  - src/core/lib/iomgr/timer_uv.c
-  - src/core/lib/iomgr/udp_server.c
-  - src/core/lib/iomgr/unix_sockets_posix.c
-  - src/core/lib/iomgr/unix_sockets_posix_noop.c
-  - src/core/lib/iomgr/wakeup_fd_cv.c
-  - src/core/lib/iomgr/wakeup_fd_eventfd.c
-  - src/core/lib/iomgr/wakeup_fd_nospecial.c
-  - src/core/lib/iomgr/wakeup_fd_pipe.c
-  - src/core/lib/iomgr/wakeup_fd_posix.c
-  - src/core/lib/json/json.c
-  - src/core/lib/json/json_reader.c
-  - src/core/lib/json/json_string.c
-  - src/core/lib/json/json_writer.c
-  - src/core/lib/slice/b64.c
-  - src/core/lib/slice/percent_encoding.c
-  - src/core/lib/slice/slice.c
-  - src/core/lib/slice/slice_buffer.c
-  - src/core/lib/slice/slice_hash_table.c
-  - src/core/lib/slice/slice_intern.c
-  - src/core/lib/slice/slice_string_helpers.c
-  - src/core/lib/surface/alarm.c
-  - src/core/lib/surface/api_trace.c
-  - src/core/lib/surface/byte_buffer.c
-  - src/core/lib/surface/byte_buffer_reader.c
-  - src/core/lib/surface/call.c
-  - src/core/lib/surface/call_details.c
-  - src/core/lib/surface/call_log_batch.c
-  - src/core/lib/surface/channel.c
-  - src/core/lib/surface/channel_init.c
-  - src/core/lib/surface/channel_ping.c
-  - src/core/lib/surface/channel_stack_type.c
-  - src/core/lib/surface/completion_queue.c
-  - src/core/lib/surface/completion_queue_factory.c
-  - src/core/lib/surface/event_string.c
+  - src/core/lib/channel/channel_args.cc
+  - src/core/lib/channel/channel_stack.cc
+  - src/core/lib/channel/channel_stack_builder.cc
+  - src/core/lib/channel/connected_channel.cc
+  - src/core/lib/channel/handshaker.cc
+  - src/core/lib/channel/handshaker_factory.cc
+  - src/core/lib/channel/handshaker_registry.cc
+  - src/core/lib/compression/compression.cc
+  - src/core/lib/compression/message_compress.cc
+  - src/core/lib/compression/stream_compression.cc
+  - src/core/lib/compression/stream_compression_gzip.cc
+  - src/core/lib/compression/stream_compression_identity.cc
+  - src/core/lib/debug/stats.cc
+  - src/core/lib/debug/stats_data.cc
+  - src/core/lib/http/format_request.cc
+  - src/core/lib/http/httpcli.cc
+  - src/core/lib/http/parser.cc
+  - src/core/lib/iomgr/call_combiner.cc
+  - src/core/lib/iomgr/closure.cc
+  - src/core/lib/iomgr/combiner.cc
+  - src/core/lib/iomgr/endpoint.cc
+  - src/core/lib/iomgr/endpoint_pair_posix.cc
+  - src/core/lib/iomgr/endpoint_pair_uv.cc
+  - src/core/lib/iomgr/endpoint_pair_windows.cc
+  - src/core/lib/iomgr/error.cc
+  - src/core/lib/iomgr/ev_epoll1_linux.cc
+  - src/core/lib/iomgr/ev_epollex_linux.cc
+  - src/core/lib/iomgr/ev_epollsig_linux.cc
+  - src/core/lib/iomgr/ev_poll_posix.cc
+  - src/core/lib/iomgr/ev_posix.cc
+  - src/core/lib/iomgr/ev_windows.cc
+  - src/core/lib/iomgr/exec_ctx.cc
+  - src/core/lib/iomgr/executor.cc
+  - src/core/lib/iomgr/gethostname_fallback.cc
+  - src/core/lib/iomgr/gethostname_host_name_max.cc
+  - src/core/lib/iomgr/gethostname_sysconf.cc
+  - src/core/lib/iomgr/iocp_windows.cc
+  - src/core/lib/iomgr/iomgr.cc
+  - src/core/lib/iomgr/iomgr_posix.cc
+  - src/core/lib/iomgr/iomgr_uv.cc
+  - src/core/lib/iomgr/iomgr_windows.cc
+  - src/core/lib/iomgr/is_epollexclusive_available.cc
+  - src/core/lib/iomgr/load_file.cc
+  - src/core/lib/iomgr/lockfree_event.cc
+  - src/core/lib/iomgr/network_status_tracker.cc
+  - src/core/lib/iomgr/polling_entity.cc
+  - src/core/lib/iomgr/pollset_set_uv.cc
+  - src/core/lib/iomgr/pollset_set_windows.cc
+  - src/core/lib/iomgr/pollset_uv.cc
+  - src/core/lib/iomgr/pollset_windows.cc
+  - src/core/lib/iomgr/resolve_address_posix.cc
+  - src/core/lib/iomgr/resolve_address_uv.cc
+  - src/core/lib/iomgr/resolve_address_windows.cc
+  - src/core/lib/iomgr/resource_quota.cc
+  - src/core/lib/iomgr/sockaddr_utils.cc
+  - src/core/lib/iomgr/socket_factory_posix.cc
+  - src/core/lib/iomgr/socket_mutator.cc
+  - src/core/lib/iomgr/socket_utils_common_posix.cc
+  - src/core/lib/iomgr/socket_utils_linux.cc
+  - src/core/lib/iomgr/socket_utils_posix.cc
+  - src/core/lib/iomgr/socket_utils_uv.cc
+  - src/core/lib/iomgr/socket_utils_windows.cc
+  - src/core/lib/iomgr/socket_windows.cc
+  - src/core/lib/iomgr/tcp_client_posix.cc
+  - src/core/lib/iomgr/tcp_client_uv.cc
+  - src/core/lib/iomgr/tcp_client_windows.cc
+  - src/core/lib/iomgr/tcp_posix.cc
+  - src/core/lib/iomgr/tcp_server_posix.cc
+  - src/core/lib/iomgr/tcp_server_utils_posix_common.cc
+  - src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc
+  - src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc
+  - src/core/lib/iomgr/tcp_server_uv.cc
+  - src/core/lib/iomgr/tcp_server_windows.cc
+  - src/core/lib/iomgr/tcp_uv.cc
+  - src/core/lib/iomgr/tcp_windows.cc
+  - src/core/lib/iomgr/time_averaged_stats.cc
+  - src/core/lib/iomgr/timer_generic.cc
+  - src/core/lib/iomgr/timer_heap.cc
+  - src/core/lib/iomgr/timer_manager.cc
+  - src/core/lib/iomgr/timer_uv.cc
+  - src/core/lib/iomgr/udp_server.cc
+  - src/core/lib/iomgr/unix_sockets_posix.cc
+  - src/core/lib/iomgr/unix_sockets_posix_noop.cc
+  - src/core/lib/iomgr/wakeup_fd_cv.cc
+  - src/core/lib/iomgr/wakeup_fd_eventfd.cc
+  - src/core/lib/iomgr/wakeup_fd_nospecial.cc
+  - src/core/lib/iomgr/wakeup_fd_pipe.cc
+  - src/core/lib/iomgr/wakeup_fd_posix.cc
+  - src/core/lib/json/json.cc
+  - src/core/lib/json/json_reader.cc
+  - src/core/lib/json/json_string.cc
+  - src/core/lib/json/json_writer.cc
+  - src/core/lib/slice/b64.cc
+  - src/core/lib/slice/percent_encoding.cc
+  - src/core/lib/slice/slice.cc
+  - src/core/lib/slice/slice_buffer.cc
+  - src/core/lib/slice/slice_hash_table.cc
+  - src/core/lib/slice/slice_intern.cc
+  - src/core/lib/slice/slice_string_helpers.cc
+  - src/core/lib/surface/alarm.cc
+  - src/core/lib/surface/api_trace.cc
+  - src/core/lib/surface/byte_buffer.cc
+  - src/core/lib/surface/byte_buffer_reader.cc
+  - src/core/lib/surface/call.cc
+  - src/core/lib/surface/call_details.cc
+  - src/core/lib/surface/call_log_batch.cc
+  - src/core/lib/surface/channel.cc
+  - src/core/lib/surface/channel_init.cc
+  - src/core/lib/surface/channel_ping.cc
+  - src/core/lib/surface/channel_stack_type.cc
+  - src/core/lib/surface/completion_queue.cc
+  - src/core/lib/surface/completion_queue_factory.cc
+  - src/core/lib/surface/event_string.cc
   - src/core/lib/surface/lame_client.cc
-  - src/core/lib/surface/metadata_array.c
-  - src/core/lib/surface/server.c
-  - src/core/lib/surface/validate_metadata.c
-  - src/core/lib/surface/version.c
-  - src/core/lib/transport/bdp_estimator.c
-  - src/core/lib/transport/byte_stream.c
-  - src/core/lib/transport/connectivity_state.c
-  - src/core/lib/transport/error_utils.c
-  - src/core/lib/transport/metadata.c
-  - src/core/lib/transport/metadata_batch.c
-  - src/core/lib/transport/pid_controller.c
-  - src/core/lib/transport/service_config.c
-  - src/core/lib/transport/static_metadata.c
-  - src/core/lib/transport/status_conversion.c
-  - src/core/lib/transport/timeout_encoding.c
-  - src/core/lib/transport/transport.c
-  - src/core/lib/transport/transport_op_string.c
+  - src/core/lib/surface/metadata_array.cc
+  - src/core/lib/surface/server.cc
+  - src/core/lib/surface/validate_metadata.cc
+  - src/core/lib/surface/version.cc
+  - src/core/lib/transport/bdp_estimator.cc
+  - src/core/lib/transport/byte_stream.cc
+  - src/core/lib/transport/connectivity_state.cc
+  - src/core/lib/transport/error_utils.cc
+  - src/core/lib/transport/metadata.cc
+  - src/core/lib/transport/metadata_batch.cc
+  - src/core/lib/transport/pid_controller.cc
+  - src/core/lib/transport/service_config.cc
+  - src/core/lib/transport/static_metadata.cc
+  - src/core/lib/transport/status_conversion.cc
+  - src/core/lib/transport/timeout_encoding.cc
+  - src/core/lib/transport/transport.cc
+  - src/core/lib/transport/transport_op_string.cc
   deps:
   - gpr
   filegroups:
@@ -480,26 +480,26 @@
   - src/core/ext/filters/client_channel/subchannel_index.h
   - src/core/ext/filters/client_channel/uri_parser.h
   src:
-  - src/core/ext/filters/client_channel/channel_connectivity.c
-  - src/core/ext/filters/client_channel/client_channel.c
-  - src/core/ext/filters/client_channel/client_channel_factory.c
-  - src/core/ext/filters/client_channel/client_channel_plugin.c
-  - src/core/ext/filters/client_channel/connector.c
-  - src/core/ext/filters/client_channel/http_connect_handshaker.c
-  - src/core/ext/filters/client_channel/http_proxy.c
-  - src/core/ext/filters/client_channel/lb_policy.c
-  - src/core/ext/filters/client_channel/lb_policy_factory.c
-  - src/core/ext/filters/client_channel/lb_policy_registry.c
-  - src/core/ext/filters/client_channel/parse_address.c
-  - src/core/ext/filters/client_channel/proxy_mapper.c
-  - src/core/ext/filters/client_channel/proxy_mapper_registry.c
-  - src/core/ext/filters/client_channel/resolver.c
-  - src/core/ext/filters/client_channel/resolver_factory.c
-  - src/core/ext/filters/client_channel/resolver_registry.c
-  - src/core/ext/filters/client_channel/retry_throttle.c
-  - src/core/ext/filters/client_channel/subchannel.c
-  - src/core/ext/filters/client_channel/subchannel_index.c
-  - src/core/ext/filters/client_channel/uri_parser.c
+  - src/core/ext/filters/client_channel/channel_connectivity.cc
+  - src/core/ext/filters/client_channel/client_channel.cc
+  - src/core/ext/filters/client_channel/client_channel_factory.cc
+  - src/core/ext/filters/client_channel/client_channel_plugin.cc
+  - src/core/ext/filters/client_channel/connector.cc
+  - src/core/ext/filters/client_channel/http_connect_handshaker.cc
+  - src/core/ext/filters/client_channel/http_proxy.cc
+  - src/core/ext/filters/client_channel/lb_policy.cc
+  - src/core/ext/filters/client_channel/lb_policy_factory.cc
+  - src/core/ext/filters/client_channel/lb_policy_registry.cc
+  - src/core/ext/filters/client_channel/parse_address.cc
+  - src/core/ext/filters/client_channel/proxy_mapper.cc
+  - src/core/ext/filters/client_channel/proxy_mapper_registry.cc
+  - src/core/ext/filters/client_channel/resolver.cc
+  - src/core/ext/filters/client_channel/resolver_factory.cc
+  - src/core/ext/filters/client_channel/resolver_registry.cc
+  - src/core/ext/filters/client_channel/retry_throttle.cc
+  - src/core/ext/filters/client_channel/subchannel.cc
+  - src/core/ext/filters/client_channel/subchannel_index.cc
+  - src/core/ext/filters/client_channel/uri_parser.cc
   plugin: grpc_client_channel
   uses:
   - grpc_base
@@ -521,7 +521,7 @@
   headers:
   - src/core/ext/filters/deadline/deadline_filter.h
   src:
-  - src/core/ext/filters/deadline/deadline_filter.c
+  - src/core/ext/filters/deadline/deadline_filter.cc
   plugin: grpc_deadline_filter
   uses:
   - grpc_base
@@ -531,10 +531,10 @@
   - src/core/ext/filters/http/message_compress/message_compress_filter.h
   - src/core/ext/filters/http/server/http_server_filter.h
   src:
-  - src/core/ext/filters/http/client/http_client_filter.c
-  - src/core/ext/filters/http/http_filters_plugin.c
-  - src/core/ext/filters/http/message_compress/message_compress_filter.c
-  - src/core/ext/filters/http/server/http_server_filter.c
+  - src/core/ext/filters/http/client/http_client_filter.cc
+  - src/core/ext/filters/http/http_filters_plugin.cc
+  - src/core/ext/filters/http/message_compress/message_compress_filter.cc
+  - src/core/ext/filters/http/server/http_server_filter.cc
   plugin: grpc_http_filters
   uses:
   - grpc_base
@@ -547,11 +547,11 @@
   - src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h
   - src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h
   src:
-  - src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c
-  - src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c
-  - src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.c
-  - src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c
-  - src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c
+  - src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc
+  - src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc
+  - src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.cc
+  - src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc
+  - src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc
   - src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c
   plugin: grpc_lb_policy_grpclb
   uses:
@@ -568,11 +568,11 @@
   - src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h
   - src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h
   src:
-  - src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c
-  - src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c
-  - src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c
-  - src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c
-  - src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c
+  - src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc
+  - src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc
+  - src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc
+  - src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc
+  - src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc
   - src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c
   plugin: grpc_lb_policy_grpclb
   uses:
@@ -583,14 +583,14 @@
   - grpc_resolver_fake
 - name: grpc_lb_policy_pick_first
   src:
-  - src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c
+  - src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc
   plugin: grpc_lb_policy_pick_first
   uses:
   - grpc_base
   - grpc_client_channel
 - name: grpc_lb_policy_round_robin
   src:
-  - src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c
+  - src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc
   plugin: grpc_lb_policy_round_robin
   uses:
   - grpc_base
@@ -599,7 +599,7 @@
   headers:
   - src/core/ext/filters/max_age/max_age_filter.h
   src:
-  - src/core/ext/filters/max_age/max_age_filter.c
+  - src/core/ext/filters/max_age/max_age_filter.cc
   plugin: grpc_max_age_filter
   uses:
   - grpc_base
@@ -607,7 +607,7 @@
   headers:
   - src/core/ext/filters/message_size/message_size_filter.h
   src:
-  - src/core/ext/filters/message_size/message_size_filter.c
+  - src/core/ext/filters/message_size/message_size_filter.cc
   plugin: grpc_message_size_filter
   uses:
   - grpc_base
@@ -616,17 +616,17 @@
   - src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h
   - src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h
   src:
-  - src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c
-  - src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c
-  - src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c
-  - src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c
+  - src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc
+  - src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc
+  - src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc
+  - src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc
   plugin: grpc_resolver_dns_ares
   uses:
   - grpc_base
   - grpc_client_channel
 - name: grpc_resolver_dns_native
   src:
-  - src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c
+  - src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc
   plugin: grpc_resolver_dns_native
   uses:
   - grpc_base
@@ -635,14 +635,14 @@
   headers:
   - src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h
   src:
-  - src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c
+  - src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc
   plugin: grpc_resolver_fake
   uses:
   - grpc_base
   - grpc_client_channel
 - name: grpc_resolver_sockaddr
   src:
-  - src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c
+  - src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc
   plugin: grpc_resolver_sockaddr
   uses:
   - grpc_base
@@ -671,30 +671,30 @@
   - src/core/lib/security/transport/tsi_error.h
   - src/core/lib/security/util/json_util.h
   src:
-  - src/core/lib/http/httpcli_security_connector.c
-  - src/core/lib/security/context/security_context.c
-  - src/core/lib/security/credentials/composite/composite_credentials.c
-  - src/core/lib/security/credentials/credentials.c
-  - src/core/lib/security/credentials/credentials_metadata.c
-  - src/core/lib/security/credentials/fake/fake_credentials.c
-  - src/core/lib/security/credentials/google_default/credentials_generic.c
-  - src/core/lib/security/credentials/google_default/google_default_credentials.c
-  - src/core/lib/security/credentials/iam/iam_credentials.c
-  - src/core/lib/security/credentials/jwt/json_token.c
-  - src/core/lib/security/credentials/jwt/jwt_credentials.c
-  - src/core/lib/security/credentials/jwt/jwt_verifier.c
-  - src/core/lib/security/credentials/oauth2/oauth2_credentials.c
-  - src/core/lib/security/credentials/plugin/plugin_credentials.c
-  - src/core/lib/security/credentials/ssl/ssl_credentials.c
-  - src/core/lib/security/transport/client_auth_filter.c
-  - src/core/lib/security/transport/lb_targets_info.c
-  - src/core/lib/security/transport/secure_endpoint.c
-  - src/core/lib/security/transport/security_connector.c
-  - src/core/lib/security/transport/security_handshaker.c
-  - src/core/lib/security/transport/server_auth_filter.c
-  - src/core/lib/security/transport/tsi_error.c
-  - src/core/lib/security/util/json_util.c
-  - src/core/lib/surface/init_secure.c
+  - src/core/lib/http/httpcli_security_connector.cc
+  - src/core/lib/security/context/security_context.cc
+  - src/core/lib/security/credentials/composite/composite_credentials.cc
+  - src/core/lib/security/credentials/credentials.cc
+  - src/core/lib/security/credentials/credentials_metadata.cc
+  - src/core/lib/security/credentials/fake/fake_credentials.cc
+  - src/core/lib/security/credentials/google_default/credentials_generic.cc
+  - src/core/lib/security/credentials/google_default/google_default_credentials.cc
+  - src/core/lib/security/credentials/iam/iam_credentials.cc
+  - src/core/lib/security/credentials/jwt/json_token.cc
+  - src/core/lib/security/credentials/jwt/jwt_credentials.cc
+  - src/core/lib/security/credentials/jwt/jwt_verifier.cc
+  - src/core/lib/security/credentials/oauth2/oauth2_credentials.cc
+  - src/core/lib/security/credentials/plugin/plugin_credentials.cc
+  - src/core/lib/security/credentials/ssl/ssl_credentials.cc
+  - src/core/lib/security/transport/client_auth_filter.cc
+  - src/core/lib/security/transport/lb_targets_info.cc
+  - src/core/lib/security/transport/secure_endpoint.cc
+  - src/core/lib/security/transport/security_connector.cc
+  - src/core/lib/security/transport/security_handshaker.cc
+  - src/core/lib/security/transport/server_auth_filter.cc
+  - src/core/lib/security/transport/tsi_error.cc
+  - src/core/lib/security/util/json_util.cc
+  - src/core/lib/surface/init_secure.cc
   secure: true
   uses:
   - grpc_base
@@ -704,7 +704,7 @@
   headers:
   - src/core/ext/filters/workarounds/workaround_utils.h
   src:
-  - src/core/ext/filters/workarounds/workaround_utils.c
+  - src/core/ext/filters/workarounds/workaround_utils.cc
   uses:
   - grpc_base
 - name: grpc_server_load_reporting
@@ -712,8 +712,8 @@
   - src/core/ext/filters/load_reporting/server_load_reporting_filter.h
   - src/core/ext/filters/load_reporting/server_load_reporting_plugin.h
   src:
-  - src/core/ext/filters/load_reporting/server_load_reporting_filter.c
-  - src/core/ext/filters/load_reporting/server_load_reporting_plugin.c
+  - src/core/ext/filters/load_reporting/server_load_reporting_filter.cc
+  - src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc
   plugin: grpc_server_load_reporting_plugin
   uses:
   - grpc_base
@@ -736,7 +736,7 @@
   - test/core/util/slice_splitter.h
   - test/core/util/trickle_endpoint.h
   src:
-  - src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c
+  - src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc
   - test/core/end2end/cq_verifier.c
   - test/core/end2end/fixtures/http_proxy_fixture.c
   - test/core/end2end/fixtures/proxy.c
@@ -760,11 +760,12 @@
   - grpc_transport_chttp2
 - name: grpc_trace
   src:
-  - src/core/lib/debug/trace.c
+  - src/core/lib/debug/trace.cc
   deps:
   - gpr
   filegroups:
   - grpc_trace_headers
+  - grpc_base_headers
 - name: grpc_trace_headers
   headers:
   - src/core/lib/debug/trace.h
@@ -792,28 +793,28 @@
   - src/core/ext/transport/chttp2/transport/stream_map.h
   - src/core/ext/transport/chttp2/transport/varint.h
   src:
-  - src/core/ext/transport/chttp2/transport/bin_decoder.c
-  - src/core/ext/transport/chttp2/transport/bin_encoder.c
-  - src/core/ext/transport/chttp2/transport/chttp2_plugin.c
-  - src/core/ext/transport/chttp2/transport/chttp2_transport.c
-  - src/core/ext/transport/chttp2/transport/flow_control.c
-  - src/core/ext/transport/chttp2/transport/frame_data.c
-  - src/core/ext/transport/chttp2/transport/frame_goaway.c
-  - src/core/ext/transport/chttp2/transport/frame_ping.c
-  - src/core/ext/transport/chttp2/transport/frame_rst_stream.c
-  - src/core/ext/transport/chttp2/transport/frame_settings.c
-  - src/core/ext/transport/chttp2/transport/frame_window_update.c
-  - src/core/ext/transport/chttp2/transport/hpack_encoder.c
-  - src/core/ext/transport/chttp2/transport/hpack_parser.c
-  - src/core/ext/transport/chttp2/transport/hpack_table.c
-  - src/core/ext/transport/chttp2/transport/http2_settings.c
-  - src/core/ext/transport/chttp2/transport/huffsyms.c
-  - src/core/ext/transport/chttp2/transport/incoming_metadata.c
-  - src/core/ext/transport/chttp2/transport/parsing.c
-  - src/core/ext/transport/chttp2/transport/stream_lists.c
-  - src/core/ext/transport/chttp2/transport/stream_map.c
-  - src/core/ext/transport/chttp2/transport/varint.c
-  - src/core/ext/transport/chttp2/transport/writing.c
+  - src/core/ext/transport/chttp2/transport/bin_decoder.cc
+  - src/core/ext/transport/chttp2/transport/bin_encoder.cc
+  - src/core/ext/transport/chttp2/transport/chttp2_plugin.cc
+  - src/core/ext/transport/chttp2/transport/chttp2_transport.cc
+  - src/core/ext/transport/chttp2/transport/flow_control.cc
+  - src/core/ext/transport/chttp2/transport/frame_data.cc
+  - src/core/ext/transport/chttp2/transport/frame_goaway.cc
+  - src/core/ext/transport/chttp2/transport/frame_ping.cc
+  - src/core/ext/transport/chttp2/transport/frame_rst_stream.cc
+  - src/core/ext/transport/chttp2/transport/frame_settings.cc
+  - src/core/ext/transport/chttp2/transport/frame_window_update.cc
+  - src/core/ext/transport/chttp2/transport/hpack_encoder.cc
+  - src/core/ext/transport/chttp2/transport/hpack_parser.cc
+  - src/core/ext/transport/chttp2/transport/hpack_table.cc
+  - src/core/ext/transport/chttp2/transport/http2_settings.cc
+  - src/core/ext/transport/chttp2/transport/huffsyms.cc
+  - src/core/ext/transport/chttp2/transport/incoming_metadata.cc
+  - src/core/ext/transport/chttp2/transport/parsing.cc
+  - src/core/ext/transport/chttp2/transport/stream_lists.cc
+  - src/core/ext/transport/chttp2/transport/stream_map.cc
+  - src/core/ext/transport/chttp2/transport/varint.cc
+  - src/core/ext/transport/chttp2/transport/writing.cc
   plugin: grpc_chttp2_plugin
   uses:
   - grpc_base
@@ -823,22 +824,22 @@
   headers:
   - src/core/ext/transport/chttp2/alpn/alpn.h
   src:
-  - src/core/ext/transport/chttp2/alpn/alpn.c
+  - src/core/ext/transport/chttp2/alpn/alpn.cc
   deps:
   - gpr
 - name: grpc_transport_chttp2_client_connector
   headers:
   - src/core/ext/transport/chttp2/client/chttp2_connector.h
   src:
-  - src/core/ext/transport/chttp2/client/chttp2_connector.c
+  - src/core/ext/transport/chttp2/client/chttp2_connector.cc
   uses:
   - grpc_transport_chttp2
   - grpc_base
   - grpc_client_channel
 - name: grpc_transport_chttp2_client_insecure
   src:
-  - src/core/ext/transport/chttp2/client/insecure/channel_create.c
-  - src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c
+  - src/core/ext/transport/chttp2/client/insecure/channel_create.cc
+  - src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc
   uses:
   - grpc_transport_chttp2_client_connector
   - grpc_transport_chttp2
@@ -846,7 +847,7 @@
   - grpc_client_channel
 - name: grpc_transport_chttp2_client_secure
   src:
-  - src/core/ext/transport/chttp2/client/secure/secure_channel_create.c
+  - src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc
   uses:
   - grpc_transport_chttp2
   - grpc_base
@@ -857,21 +858,21 @@
   headers:
   - src/core/ext/transport/chttp2/server/chttp2_server.h
   src:
-  - src/core/ext/transport/chttp2/server/chttp2_server.c
+  - src/core/ext/transport/chttp2/server/chttp2_server.cc
   uses:
   - grpc_transport_chttp2
   - grpc_base
 - name: grpc_transport_chttp2_server_insecure
   src:
-  - src/core/ext/transport/chttp2/server/insecure/server_chttp2.c
-  - src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c
+  - src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc
+  - src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc
   uses:
   - grpc_transport_chttp2
   - grpc_base
   - grpc_transport_chttp2_server
 - name: grpc_transport_chttp2_server_secure
   src:
-  - src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c
+  - src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc
   uses:
   - grpc_transport_chttp2
   - grpc_base
@@ -886,17 +887,17 @@
   - src/core/ext/transport/cronet/transport/cronet_transport.h
   - third_party/objective_c/Cronet/bidirectional_stream_c.h
   src:
-  - src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
-  - src/core/ext/transport/cronet/transport/cronet_api_dummy.c
-  - src/core/ext/transport/cronet/transport/cronet_transport.c
+  - src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc
+  - src/core/ext/transport/cronet/transport/cronet_api_dummy.cc
+  - src/core/ext/transport/cronet/transport/cronet_transport.cc
   filegroups:
   - grpc_base
   - grpc_transport_chttp2
   - grpc_http_filters
 - name: grpc_transport_inproc
   src:
-  - src/core/ext/transport/inproc/inproc_plugin.c
-  - src/core/ext/transport/inproc/inproc_transport.c
+  - src/core/ext/transport/inproc/inproc_plugin.cc
+  - src/core/ext/transport/inproc/inproc_transport.cc
   plugin: grpc_inproc_plugin
   uses:
   - grpc_transport_inproc_headers
@@ -910,7 +911,7 @@
   headers:
   - src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h
   src:
-  - src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c
+  - src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc
   plugin: grpc_workaround_cronet_compression_filter
   uses:
   - grpc_base
@@ -944,10 +945,10 @@
   - src/core/tsi/ssl_types.h
   - src/core/tsi/transport_security_grpc.h
   src:
-  - src/core/tsi/fake_transport_security.c
-  - src/core/tsi/gts_transport_security.c
-  - src/core/tsi/ssl_transport_security.c
-  - src/core/tsi/transport_security_grpc.c
+  - src/core/tsi/fake_transport_security.cc
+  - src/core/tsi/gts_transport_security.cc
+  - src/core/tsi/ssl_transport_security.cc
+  - src/core/tsi/transport_security_grpc.cc
   deps:
   - gpr
   plugin: grpc_tsi_gts
@@ -962,8 +963,8 @@
   - src/core/tsi/transport_security_adapter.h
   - src/core/tsi/transport_security_interface.h
   src:
-  - src/core/tsi/transport_security.c
-  - src/core/tsi/transport_security_adapter.c
+  - src/core/tsi/transport_security.cc
+  - src/core/tsi/transport_security_adapter.cc
   deps:
   - gpr
   secure: true
@@ -1152,7 +1153,7 @@
   build: all
   language: c
   src:
-  - src/core/lib/surface/init.c
+  - src/core/lib/surface/init.cc
   baselib: true
   deps_linkage: static
   dll: true
@@ -1188,7 +1189,7 @@
   build: all
   language: c
   src:
-  - src/core/lib/surface/init.c
+  - src/core/lib/surface/init.cc
   baselib: true
   deps_linkage: static
   dll: true
@@ -1256,8 +1257,8 @@
   build: all
   language: c
   src:
-  - src/core/lib/surface/init.c
-  - src/core/lib/surface/init_unsecure.c
+  - src/core/lib/surface/init.cc
+  - src/core/lib/surface/init_unsecure.cc
   baselib: true
   deps_linkage: static
   dll: true
@@ -4784,7 +4785,7 @@
     CXX: g++
     DEFINES: _DEBUG DEBUG GPR_GCOV
     LD: gcc
-    LDFLAGS: -fprofile-arcs -ftest-coverage -rdynamic
+    LDFLAGS: -fprofile-arcs -ftest-coverage -rdynamic -lstdc++
     LDXX: g++
   helgrind:
     CPPFLAGS: -O0
diff --git a/config.m4 b/config.m4
index 72f8a1e..34d7116 100644
--- a/config.m4
+++ b/config.m4
@@ -39,313 +39,313 @@
     src/php/ext/grpc/server.c \
     src/php/ext/grpc/server_credentials.c \
     src/php/ext/grpc/timeval.c \
-    src/core/lib/profiling/basic_timers.c \
-    src/core/lib/profiling/stap_timers.c \
-    src/core/lib/support/alloc.c \
-    src/core/lib/support/arena.c \
-    src/core/lib/support/atm.c \
-    src/core/lib/support/avl.c \
-    src/core/lib/support/backoff.c \
-    src/core/lib/support/cmdline.c \
-    src/core/lib/support/cpu_iphone.c \
-    src/core/lib/support/cpu_linux.c \
-    src/core/lib/support/cpu_posix.c \
-    src/core/lib/support/cpu_windows.c \
-    src/core/lib/support/env_linux.c \
-    src/core/lib/support/env_posix.c \
-    src/core/lib/support/env_windows.c \
-    src/core/lib/support/histogram.c \
-    src/core/lib/support/host_port.c \
-    src/core/lib/support/log.c \
-    src/core/lib/support/log_android.c \
-    src/core/lib/support/log_linux.c \
-    src/core/lib/support/log_posix.c \
-    src/core/lib/support/log_windows.c \
-    src/core/lib/support/mpscq.c \
-    src/core/lib/support/murmur_hash.c \
-    src/core/lib/support/stack_lockfree.c \
-    src/core/lib/support/string.c \
-    src/core/lib/support/string_posix.c \
-    src/core/lib/support/string_util_windows.c \
-    src/core/lib/support/string_windows.c \
-    src/core/lib/support/subprocess_posix.c \
-    src/core/lib/support/subprocess_windows.c \
-    src/core/lib/support/sync.c \
-    src/core/lib/support/sync_posix.c \
-    src/core/lib/support/sync_windows.c \
-    src/core/lib/support/thd.c \
-    src/core/lib/support/thd_posix.c \
-    src/core/lib/support/thd_windows.c \
-    src/core/lib/support/time.c \
-    src/core/lib/support/time_posix.c \
-    src/core/lib/support/time_precise.c \
-    src/core/lib/support/time_windows.c \
-    src/core/lib/support/tls_pthread.c \
-    src/core/lib/support/tmpfile_msys.c \
-    src/core/lib/support/tmpfile_posix.c \
-    src/core/lib/support/tmpfile_windows.c \
-    src/core/lib/support/wrap_memcpy.c \
-    src/core/lib/surface/init.c \
-    src/core/lib/channel/channel_args.c \
-    src/core/lib/channel/channel_stack.c \
-    src/core/lib/channel/channel_stack_builder.c \
-    src/core/lib/channel/connected_channel.c \
-    src/core/lib/channel/handshaker.c \
-    src/core/lib/channel/handshaker_factory.c \
-    src/core/lib/channel/handshaker_registry.c \
-    src/core/lib/compression/compression.c \
-    src/core/lib/compression/message_compress.c \
-    src/core/lib/compression/stream_compression.c \
-    src/core/lib/compression/stream_compression_gzip.c \
-    src/core/lib/compression/stream_compression_identity.c \
-    src/core/lib/debug/stats.c \
-    src/core/lib/debug/stats_data.c \
-    src/core/lib/http/format_request.c \
-    src/core/lib/http/httpcli.c \
-    src/core/lib/http/parser.c \
-    src/core/lib/iomgr/call_combiner.c \
-    src/core/lib/iomgr/closure.c \
-    src/core/lib/iomgr/combiner.c \
-    src/core/lib/iomgr/endpoint.c \
-    src/core/lib/iomgr/endpoint_pair_posix.c \
-    src/core/lib/iomgr/endpoint_pair_uv.c \
-    src/core/lib/iomgr/endpoint_pair_windows.c \
-    src/core/lib/iomgr/error.c \
-    src/core/lib/iomgr/ev_epoll1_linux.c \
-    src/core/lib/iomgr/ev_epollex_linux.c \
-    src/core/lib/iomgr/ev_epollsig_linux.c \
-    src/core/lib/iomgr/ev_poll_posix.c \
-    src/core/lib/iomgr/ev_posix.c \
-    src/core/lib/iomgr/ev_windows.c \
-    src/core/lib/iomgr/exec_ctx.c \
-    src/core/lib/iomgr/executor.c \
-    src/core/lib/iomgr/gethostname_fallback.c \
-    src/core/lib/iomgr/gethostname_host_name_max.c \
-    src/core/lib/iomgr/gethostname_sysconf.c \
-    src/core/lib/iomgr/iocp_windows.c \
-    src/core/lib/iomgr/iomgr.c \
-    src/core/lib/iomgr/iomgr_posix.c \
-    src/core/lib/iomgr/iomgr_uv.c \
-    src/core/lib/iomgr/iomgr_windows.c \
-    src/core/lib/iomgr/is_epollexclusive_available.c \
-    src/core/lib/iomgr/load_file.c \
-    src/core/lib/iomgr/lockfree_event.c \
-    src/core/lib/iomgr/network_status_tracker.c \
-    src/core/lib/iomgr/polling_entity.c \
-    src/core/lib/iomgr/pollset_set_uv.c \
-    src/core/lib/iomgr/pollset_set_windows.c \
-    src/core/lib/iomgr/pollset_uv.c \
-    src/core/lib/iomgr/pollset_windows.c \
-    src/core/lib/iomgr/resolve_address_posix.c \
-    src/core/lib/iomgr/resolve_address_uv.c \
-    src/core/lib/iomgr/resolve_address_windows.c \
-    src/core/lib/iomgr/resource_quota.c \
-    src/core/lib/iomgr/sockaddr_utils.c \
-    src/core/lib/iomgr/socket_factory_posix.c \
-    src/core/lib/iomgr/socket_mutator.c \
-    src/core/lib/iomgr/socket_utils_common_posix.c \
-    src/core/lib/iomgr/socket_utils_linux.c \
-    src/core/lib/iomgr/socket_utils_posix.c \
-    src/core/lib/iomgr/socket_utils_uv.c \
-    src/core/lib/iomgr/socket_utils_windows.c \
-    src/core/lib/iomgr/socket_windows.c \
-    src/core/lib/iomgr/tcp_client_posix.c \
-    src/core/lib/iomgr/tcp_client_uv.c \
-    src/core/lib/iomgr/tcp_client_windows.c \
-    src/core/lib/iomgr/tcp_posix.c \
-    src/core/lib/iomgr/tcp_server_posix.c \
-    src/core/lib/iomgr/tcp_server_utils_posix_common.c \
-    src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c \
-    src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c \
-    src/core/lib/iomgr/tcp_server_uv.c \
-    src/core/lib/iomgr/tcp_server_windows.c \
-    src/core/lib/iomgr/tcp_uv.c \
-    src/core/lib/iomgr/tcp_windows.c \
-    src/core/lib/iomgr/time_averaged_stats.c \
-    src/core/lib/iomgr/timer_generic.c \
-    src/core/lib/iomgr/timer_heap.c \
-    src/core/lib/iomgr/timer_manager.c \
-    src/core/lib/iomgr/timer_uv.c \
-    src/core/lib/iomgr/udp_server.c \
-    src/core/lib/iomgr/unix_sockets_posix.c \
-    src/core/lib/iomgr/unix_sockets_posix_noop.c \
-    src/core/lib/iomgr/wakeup_fd_cv.c \
-    src/core/lib/iomgr/wakeup_fd_eventfd.c \
-    src/core/lib/iomgr/wakeup_fd_nospecial.c \
-    src/core/lib/iomgr/wakeup_fd_pipe.c \
-    src/core/lib/iomgr/wakeup_fd_posix.c \
-    src/core/lib/json/json.c \
-    src/core/lib/json/json_reader.c \
-    src/core/lib/json/json_string.c \
-    src/core/lib/json/json_writer.c \
-    src/core/lib/slice/b64.c \
-    src/core/lib/slice/percent_encoding.c \
-    src/core/lib/slice/slice.c \
-    src/core/lib/slice/slice_buffer.c \
-    src/core/lib/slice/slice_hash_table.c \
-    src/core/lib/slice/slice_intern.c \
-    src/core/lib/slice/slice_string_helpers.c \
-    src/core/lib/surface/alarm.c \
-    src/core/lib/surface/api_trace.c \
-    src/core/lib/surface/byte_buffer.c \
-    src/core/lib/surface/byte_buffer_reader.c \
-    src/core/lib/surface/call.c \
-    src/core/lib/surface/call_details.c \
-    src/core/lib/surface/call_log_batch.c \
-    src/core/lib/surface/channel.c \
-    src/core/lib/surface/channel_init.c \
-    src/core/lib/surface/channel_ping.c \
-    src/core/lib/surface/channel_stack_type.c \
-    src/core/lib/surface/completion_queue.c \
-    src/core/lib/surface/completion_queue_factory.c \
-    src/core/lib/surface/event_string.c \
+    src/core/lib/profiling/basic_timers.cc \
+    src/core/lib/profiling/stap_timers.cc \
+    src/core/lib/support/alloc.cc \
+    src/core/lib/support/arena.cc \
+    src/core/lib/support/atm.cc \
+    src/core/lib/support/avl.cc \
+    src/core/lib/support/backoff.cc \
+    src/core/lib/support/cmdline.cc \
+    src/core/lib/support/cpu_iphone.cc \
+    src/core/lib/support/cpu_linux.cc \
+    src/core/lib/support/cpu_posix.cc \
+    src/core/lib/support/cpu_windows.cc \
+    src/core/lib/support/env_linux.cc \
+    src/core/lib/support/env_posix.cc \
+    src/core/lib/support/env_windows.cc \
+    src/core/lib/support/histogram.cc \
+    src/core/lib/support/host_port.cc \
+    src/core/lib/support/log.cc \
+    src/core/lib/support/log_android.cc \
+    src/core/lib/support/log_linux.cc \
+    src/core/lib/support/log_posix.cc \
+    src/core/lib/support/log_windows.cc \
+    src/core/lib/support/mpscq.cc \
+    src/core/lib/support/murmur_hash.cc \
+    src/core/lib/support/stack_lockfree.cc \
+    src/core/lib/support/string.cc \
+    src/core/lib/support/string_posix.cc \
+    src/core/lib/support/string_util_windows.cc \
+    src/core/lib/support/string_windows.cc \
+    src/core/lib/support/subprocess_posix.cc \
+    src/core/lib/support/subprocess_windows.cc \
+    src/core/lib/support/sync.cc \
+    src/core/lib/support/sync_posix.cc \
+    src/core/lib/support/sync_windows.cc \
+    src/core/lib/support/thd.cc \
+    src/core/lib/support/thd_posix.cc \
+    src/core/lib/support/thd_windows.cc \
+    src/core/lib/support/time.cc \
+    src/core/lib/support/time_posix.cc \
+    src/core/lib/support/time_precise.cc \
+    src/core/lib/support/time_windows.cc \
+    src/core/lib/support/tls_pthread.cc \
+    src/core/lib/support/tmpfile_msys.cc \
+    src/core/lib/support/tmpfile_posix.cc \
+    src/core/lib/support/tmpfile_windows.cc \
+    src/core/lib/support/wrap_memcpy.cc \
+    src/core/lib/surface/init.cc \
+    src/core/lib/channel/channel_args.cc \
+    src/core/lib/channel/channel_stack.cc \
+    src/core/lib/channel/channel_stack_builder.cc \
+    src/core/lib/channel/connected_channel.cc \
+    src/core/lib/channel/handshaker.cc \
+    src/core/lib/channel/handshaker_factory.cc \
+    src/core/lib/channel/handshaker_registry.cc \
+    src/core/lib/compression/compression.cc \
+    src/core/lib/compression/message_compress.cc \
+    src/core/lib/compression/stream_compression.cc \
+    src/core/lib/compression/stream_compression_gzip.cc \
+    src/core/lib/compression/stream_compression_identity.cc \
+    src/core/lib/debug/stats.cc \
+    src/core/lib/debug/stats_data.cc \
+    src/core/lib/http/format_request.cc \
+    src/core/lib/http/httpcli.cc \
+    src/core/lib/http/parser.cc \
+    src/core/lib/iomgr/call_combiner.cc \
+    src/core/lib/iomgr/closure.cc \
+    src/core/lib/iomgr/combiner.cc \
+    src/core/lib/iomgr/endpoint.cc \
+    src/core/lib/iomgr/endpoint_pair_posix.cc \
+    src/core/lib/iomgr/endpoint_pair_uv.cc \
+    src/core/lib/iomgr/endpoint_pair_windows.cc \
+    src/core/lib/iomgr/error.cc \
+    src/core/lib/iomgr/ev_epoll1_linux.cc \
+    src/core/lib/iomgr/ev_epollex_linux.cc \
+    src/core/lib/iomgr/ev_epollsig_linux.cc \
+    src/core/lib/iomgr/ev_poll_posix.cc \
+    src/core/lib/iomgr/ev_posix.cc \
+    src/core/lib/iomgr/ev_windows.cc \
+    src/core/lib/iomgr/exec_ctx.cc \
+    src/core/lib/iomgr/executor.cc \
+    src/core/lib/iomgr/gethostname_fallback.cc \
+    src/core/lib/iomgr/gethostname_host_name_max.cc \
+    src/core/lib/iomgr/gethostname_sysconf.cc \
+    src/core/lib/iomgr/iocp_windows.cc \
+    src/core/lib/iomgr/iomgr.cc \
+    src/core/lib/iomgr/iomgr_posix.cc \
+    src/core/lib/iomgr/iomgr_uv.cc \
+    src/core/lib/iomgr/iomgr_windows.cc \
+    src/core/lib/iomgr/is_epollexclusive_available.cc \
+    src/core/lib/iomgr/load_file.cc \
+    src/core/lib/iomgr/lockfree_event.cc \
+    src/core/lib/iomgr/network_status_tracker.cc \
+    src/core/lib/iomgr/polling_entity.cc \
+    src/core/lib/iomgr/pollset_set_uv.cc \
+    src/core/lib/iomgr/pollset_set_windows.cc \
+    src/core/lib/iomgr/pollset_uv.cc \
+    src/core/lib/iomgr/pollset_windows.cc \
+    src/core/lib/iomgr/resolve_address_posix.cc \
+    src/core/lib/iomgr/resolve_address_uv.cc \
+    src/core/lib/iomgr/resolve_address_windows.cc \
+    src/core/lib/iomgr/resource_quota.cc \
+    src/core/lib/iomgr/sockaddr_utils.cc \
+    src/core/lib/iomgr/socket_factory_posix.cc \
+    src/core/lib/iomgr/socket_mutator.cc \
+    src/core/lib/iomgr/socket_utils_common_posix.cc \
+    src/core/lib/iomgr/socket_utils_linux.cc \
+    src/core/lib/iomgr/socket_utils_posix.cc \
+    src/core/lib/iomgr/socket_utils_uv.cc \
+    src/core/lib/iomgr/socket_utils_windows.cc \
+    src/core/lib/iomgr/socket_windows.cc \
+    src/core/lib/iomgr/tcp_client_posix.cc \
+    src/core/lib/iomgr/tcp_client_uv.cc \
+    src/core/lib/iomgr/tcp_client_windows.cc \
+    src/core/lib/iomgr/tcp_posix.cc \
+    src/core/lib/iomgr/tcp_server_posix.cc \
+    src/core/lib/iomgr/tcp_server_utils_posix_common.cc \
+    src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc \
+    src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc \
+    src/core/lib/iomgr/tcp_server_uv.cc \
+    src/core/lib/iomgr/tcp_server_windows.cc \
+    src/core/lib/iomgr/tcp_uv.cc \
+    src/core/lib/iomgr/tcp_windows.cc \
+    src/core/lib/iomgr/time_averaged_stats.cc \
+    src/core/lib/iomgr/timer_generic.cc \
+    src/core/lib/iomgr/timer_heap.cc \
+    src/core/lib/iomgr/timer_manager.cc \
+    src/core/lib/iomgr/timer_uv.cc \
+    src/core/lib/iomgr/udp_server.cc \
+    src/core/lib/iomgr/unix_sockets_posix.cc \
+    src/core/lib/iomgr/unix_sockets_posix_noop.cc \
+    src/core/lib/iomgr/wakeup_fd_cv.cc \
+    src/core/lib/iomgr/wakeup_fd_eventfd.cc \
+    src/core/lib/iomgr/wakeup_fd_nospecial.cc \
+    src/core/lib/iomgr/wakeup_fd_pipe.cc \
+    src/core/lib/iomgr/wakeup_fd_posix.cc \
+    src/core/lib/json/json.cc \
+    src/core/lib/json/json_reader.cc \
+    src/core/lib/json/json_string.cc \
+    src/core/lib/json/json_writer.cc \
+    src/core/lib/slice/b64.cc \
+    src/core/lib/slice/percent_encoding.cc \
+    src/core/lib/slice/slice.cc \
+    src/core/lib/slice/slice_buffer.cc \
+    src/core/lib/slice/slice_hash_table.cc \
+    src/core/lib/slice/slice_intern.cc \
+    src/core/lib/slice/slice_string_helpers.cc \
+    src/core/lib/surface/alarm.cc \
+    src/core/lib/surface/api_trace.cc \
+    src/core/lib/surface/byte_buffer.cc \
+    src/core/lib/surface/byte_buffer_reader.cc \
+    src/core/lib/surface/call.cc \
+    src/core/lib/surface/call_details.cc \
+    src/core/lib/surface/call_log_batch.cc \
+    src/core/lib/surface/channel.cc \
+    src/core/lib/surface/channel_init.cc \
+    src/core/lib/surface/channel_ping.cc \
+    src/core/lib/surface/channel_stack_type.cc \
+    src/core/lib/surface/completion_queue.cc \
+    src/core/lib/surface/completion_queue_factory.cc \
+    src/core/lib/surface/event_string.cc \
     src/core/lib/surface/lame_client.cc \
-    src/core/lib/surface/metadata_array.c \
-    src/core/lib/surface/server.c \
-    src/core/lib/surface/validate_metadata.c \
-    src/core/lib/surface/version.c \
-    src/core/lib/transport/bdp_estimator.c \
-    src/core/lib/transport/byte_stream.c \
-    src/core/lib/transport/connectivity_state.c \
-    src/core/lib/transport/error_utils.c \
-    src/core/lib/transport/metadata.c \
-    src/core/lib/transport/metadata_batch.c \
-    src/core/lib/transport/pid_controller.c \
-    src/core/lib/transport/service_config.c \
-    src/core/lib/transport/static_metadata.c \
-    src/core/lib/transport/status_conversion.c \
-    src/core/lib/transport/timeout_encoding.c \
-    src/core/lib/transport/transport.c \
-    src/core/lib/transport/transport_op_string.c \
-    src/core/lib/debug/trace.c \
-    src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c \
-    src/core/ext/transport/chttp2/transport/bin_decoder.c \
-    src/core/ext/transport/chttp2/transport/bin_encoder.c \
-    src/core/ext/transport/chttp2/transport/chttp2_plugin.c \
-    src/core/ext/transport/chttp2/transport/chttp2_transport.c \
-    src/core/ext/transport/chttp2/transport/flow_control.c \
-    src/core/ext/transport/chttp2/transport/frame_data.c \
-    src/core/ext/transport/chttp2/transport/frame_goaway.c \
-    src/core/ext/transport/chttp2/transport/frame_ping.c \
-    src/core/ext/transport/chttp2/transport/frame_rst_stream.c \
-    src/core/ext/transport/chttp2/transport/frame_settings.c \
-    src/core/ext/transport/chttp2/transport/frame_window_update.c \
-    src/core/ext/transport/chttp2/transport/hpack_encoder.c \
-    src/core/ext/transport/chttp2/transport/hpack_parser.c \
-    src/core/ext/transport/chttp2/transport/hpack_table.c \
-    src/core/ext/transport/chttp2/transport/http2_settings.c \
-    src/core/ext/transport/chttp2/transport/huffsyms.c \
-    src/core/ext/transport/chttp2/transport/incoming_metadata.c \
-    src/core/ext/transport/chttp2/transport/parsing.c \
-    src/core/ext/transport/chttp2/transport/stream_lists.c \
-    src/core/ext/transport/chttp2/transport/stream_map.c \
-    src/core/ext/transport/chttp2/transport/varint.c \
-    src/core/ext/transport/chttp2/transport/writing.c \
-    src/core/ext/transport/chttp2/alpn/alpn.c \
-    src/core/ext/filters/http/client/http_client_filter.c \
-    src/core/ext/filters/http/http_filters_plugin.c \
-    src/core/ext/filters/http/message_compress/message_compress_filter.c \
-    src/core/ext/filters/http/server/http_server_filter.c \
-    src/core/lib/http/httpcli_security_connector.c \
-    src/core/lib/security/context/security_context.c \
-    src/core/lib/security/credentials/composite/composite_credentials.c \
-    src/core/lib/security/credentials/credentials.c \
-    src/core/lib/security/credentials/credentials_metadata.c \
-    src/core/lib/security/credentials/fake/fake_credentials.c \
-    src/core/lib/security/credentials/google_default/credentials_generic.c \
-    src/core/lib/security/credentials/google_default/google_default_credentials.c \
-    src/core/lib/security/credentials/iam/iam_credentials.c \
-    src/core/lib/security/credentials/jwt/json_token.c \
-    src/core/lib/security/credentials/jwt/jwt_credentials.c \
-    src/core/lib/security/credentials/jwt/jwt_verifier.c \
-    src/core/lib/security/credentials/oauth2/oauth2_credentials.c \
-    src/core/lib/security/credentials/plugin/plugin_credentials.c \
-    src/core/lib/security/credentials/ssl/ssl_credentials.c \
-    src/core/lib/security/transport/client_auth_filter.c \
-    src/core/lib/security/transport/lb_targets_info.c \
-    src/core/lib/security/transport/secure_endpoint.c \
-    src/core/lib/security/transport/security_connector.c \
-    src/core/lib/security/transport/security_handshaker.c \
-    src/core/lib/security/transport/server_auth_filter.c \
-    src/core/lib/security/transport/tsi_error.c \
-    src/core/lib/security/util/json_util.c \
-    src/core/lib/surface/init_secure.c \
-    src/core/tsi/fake_transport_security.c \
-    src/core/tsi/gts_transport_security.c \
-    src/core/tsi/ssl_transport_security.c \
-    src/core/tsi/transport_security_grpc.c \
-    src/core/tsi/transport_security.c \
-    src/core/tsi/transport_security_adapter.c \
-    src/core/ext/transport/chttp2/server/chttp2_server.c \
-    src/core/ext/transport/chttp2/client/secure/secure_channel_create.c \
-    src/core/ext/filters/client_channel/channel_connectivity.c \
-    src/core/ext/filters/client_channel/client_channel.c \
-    src/core/ext/filters/client_channel/client_channel_factory.c \
-    src/core/ext/filters/client_channel/client_channel_plugin.c \
-    src/core/ext/filters/client_channel/connector.c \
-    src/core/ext/filters/client_channel/http_connect_handshaker.c \
-    src/core/ext/filters/client_channel/http_proxy.c \
-    src/core/ext/filters/client_channel/lb_policy.c \
-    src/core/ext/filters/client_channel/lb_policy_factory.c \
-    src/core/ext/filters/client_channel/lb_policy_registry.c \
-    src/core/ext/filters/client_channel/parse_address.c \
-    src/core/ext/filters/client_channel/proxy_mapper.c \
-    src/core/ext/filters/client_channel/proxy_mapper_registry.c \
-    src/core/ext/filters/client_channel/resolver.c \
-    src/core/ext/filters/client_channel/resolver_factory.c \
-    src/core/ext/filters/client_channel/resolver_registry.c \
-    src/core/ext/filters/client_channel/retry_throttle.c \
-    src/core/ext/filters/client_channel/subchannel.c \
-    src/core/ext/filters/client_channel/subchannel_index.c \
-    src/core/ext/filters/client_channel/uri_parser.c \
-    src/core/ext/filters/deadline/deadline_filter.c \
-    src/core/ext/transport/chttp2/client/chttp2_connector.c \
-    src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
-    src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c \
-    src/core/ext/transport/chttp2/client/insecure/channel_create.c \
-    src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c \
-    src/core/ext/transport/inproc/inproc_plugin.c \
-    src/core/ext/transport/inproc/inproc_transport.c \
-    src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c \
-    src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c \
-    src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c \
-    src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c \
-    src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c \
+    src/core/lib/surface/metadata_array.cc \
+    src/core/lib/surface/server.cc \
+    src/core/lib/surface/validate_metadata.cc \
+    src/core/lib/surface/version.cc \
+    src/core/lib/transport/bdp_estimator.cc \
+    src/core/lib/transport/byte_stream.cc \
+    src/core/lib/transport/connectivity_state.cc \
+    src/core/lib/transport/error_utils.cc \
+    src/core/lib/transport/metadata.cc \
+    src/core/lib/transport/metadata_batch.cc \
+    src/core/lib/transport/pid_controller.cc \
+    src/core/lib/transport/service_config.cc \
+    src/core/lib/transport/static_metadata.cc \
+    src/core/lib/transport/status_conversion.cc \
+    src/core/lib/transport/timeout_encoding.cc \
+    src/core/lib/transport/transport.cc \
+    src/core/lib/transport/transport_op_string.cc \
+    src/core/lib/debug/trace.cc \
+    src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc \
+    src/core/ext/transport/chttp2/transport/bin_decoder.cc \
+    src/core/ext/transport/chttp2/transport/bin_encoder.cc \
+    src/core/ext/transport/chttp2/transport/chttp2_plugin.cc \
+    src/core/ext/transport/chttp2/transport/chttp2_transport.cc \
+    src/core/ext/transport/chttp2/transport/flow_control.cc \
+    src/core/ext/transport/chttp2/transport/frame_data.cc \
+    src/core/ext/transport/chttp2/transport/frame_goaway.cc \
+    src/core/ext/transport/chttp2/transport/frame_ping.cc \
+    src/core/ext/transport/chttp2/transport/frame_rst_stream.cc \
+    src/core/ext/transport/chttp2/transport/frame_settings.cc \
+    src/core/ext/transport/chttp2/transport/frame_window_update.cc \
+    src/core/ext/transport/chttp2/transport/hpack_encoder.cc \
+    src/core/ext/transport/chttp2/transport/hpack_parser.cc \
+    src/core/ext/transport/chttp2/transport/hpack_table.cc \
+    src/core/ext/transport/chttp2/transport/http2_settings.cc \
+    src/core/ext/transport/chttp2/transport/huffsyms.cc \
+    src/core/ext/transport/chttp2/transport/incoming_metadata.cc \
+    src/core/ext/transport/chttp2/transport/parsing.cc \
+    src/core/ext/transport/chttp2/transport/stream_lists.cc \
+    src/core/ext/transport/chttp2/transport/stream_map.cc \
+    src/core/ext/transport/chttp2/transport/varint.cc \
+    src/core/ext/transport/chttp2/transport/writing.cc \
+    src/core/ext/transport/chttp2/alpn/alpn.cc \
+    src/core/ext/filters/http/client/http_client_filter.cc \
+    src/core/ext/filters/http/http_filters_plugin.cc \
+    src/core/ext/filters/http/message_compress/message_compress_filter.cc \
+    src/core/ext/filters/http/server/http_server_filter.cc \
+    src/core/lib/http/httpcli_security_connector.cc \
+    src/core/lib/security/context/security_context.cc \
+    src/core/lib/security/credentials/composite/composite_credentials.cc \
+    src/core/lib/security/credentials/credentials.cc \
+    src/core/lib/security/credentials/credentials_metadata.cc \
+    src/core/lib/security/credentials/fake/fake_credentials.cc \
+    src/core/lib/security/credentials/google_default/credentials_generic.cc \
+    src/core/lib/security/credentials/google_default/google_default_credentials.cc \
+    src/core/lib/security/credentials/iam/iam_credentials.cc \
+    src/core/lib/security/credentials/jwt/json_token.cc \
+    src/core/lib/security/credentials/jwt/jwt_credentials.cc \
+    src/core/lib/security/credentials/jwt/jwt_verifier.cc \
+    src/core/lib/security/credentials/oauth2/oauth2_credentials.cc \
+    src/core/lib/security/credentials/plugin/plugin_credentials.cc \
+    src/core/lib/security/credentials/ssl/ssl_credentials.cc \
+    src/core/lib/security/transport/client_auth_filter.cc \
+    src/core/lib/security/transport/lb_targets_info.cc \
+    src/core/lib/security/transport/secure_endpoint.cc \
+    src/core/lib/security/transport/security_connector.cc \
+    src/core/lib/security/transport/security_handshaker.cc \
+    src/core/lib/security/transport/server_auth_filter.cc \
+    src/core/lib/security/transport/tsi_error.cc \
+    src/core/lib/security/util/json_util.cc \
+    src/core/lib/surface/init_secure.cc \
+    src/core/tsi/fake_transport_security.cc \
+    src/core/tsi/gts_transport_security.cc \
+    src/core/tsi/ssl_transport_security.cc \
+    src/core/tsi/transport_security_grpc.cc \
+    src/core/tsi/transport_security.cc \
+    src/core/tsi/transport_security_adapter.cc \
+    src/core/ext/transport/chttp2/server/chttp2_server.cc \
+    src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc \
+    src/core/ext/filters/client_channel/channel_connectivity.cc \
+    src/core/ext/filters/client_channel/client_channel.cc \
+    src/core/ext/filters/client_channel/client_channel_factory.cc \
+    src/core/ext/filters/client_channel/client_channel_plugin.cc \
+    src/core/ext/filters/client_channel/connector.cc \
+    src/core/ext/filters/client_channel/http_connect_handshaker.cc \
+    src/core/ext/filters/client_channel/http_proxy.cc \
+    src/core/ext/filters/client_channel/lb_policy.cc \
+    src/core/ext/filters/client_channel/lb_policy_factory.cc \
+    src/core/ext/filters/client_channel/lb_policy_registry.cc \
+    src/core/ext/filters/client_channel/parse_address.cc \
+    src/core/ext/filters/client_channel/proxy_mapper.cc \
+    src/core/ext/filters/client_channel/proxy_mapper_registry.cc \
+    src/core/ext/filters/client_channel/resolver.cc \
+    src/core/ext/filters/client_channel/resolver_factory.cc \
+    src/core/ext/filters/client_channel/resolver_registry.cc \
+    src/core/ext/filters/client_channel/retry_throttle.cc \
+    src/core/ext/filters/client_channel/subchannel.cc \
+    src/core/ext/filters/client_channel/subchannel_index.cc \
+    src/core/ext/filters/client_channel/uri_parser.cc \
+    src/core/ext/filters/deadline/deadline_filter.cc \
+    src/core/ext/transport/chttp2/client/chttp2_connector.cc \
+    src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc \
+    src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc \
+    src/core/ext/transport/chttp2/client/insecure/channel_create.cc \
+    src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc \
+    src/core/ext/transport/inproc/inproc_plugin.cc \
+    src/core/ext/transport/inproc/inproc_transport.cc \
+    src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc \
+    src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc \
+    src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc \
+    src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc \
+    src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc \
     src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c \
     third_party/nanopb/pb_common.c \
     third_party/nanopb/pb_decode.c \
     third_party/nanopb/pb_encode.c \
-    src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c \
-    src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c \
-    src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c \
-    src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c \
-    src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c \
-    src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c \
-    src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c \
-    src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c \
-    src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c \
-    src/core/ext/filters/load_reporting/server_load_reporting_filter.c \
-    src/core/ext/filters/load_reporting/server_load_reporting_plugin.c \
-    src/core/ext/census/base_resources.c \
-    src/core/ext/census/context.c \
+    src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc \
+    src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc \
+    src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc \
+    src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc \
+    src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc \
+    src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc \
+    src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc \
+    src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc \
+    src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc \
+    src/core/ext/filters/load_reporting/server_load_reporting_filter.cc \
+    src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc \
+    src/core/ext/census/base_resources.cc \
+    src/core/ext/census/context.cc \
     src/core/ext/census/gen/census.pb.c \
     src/core/ext/census/gen/trace_context.pb.c \
-    src/core/ext/census/grpc_context.c \
-    src/core/ext/census/grpc_filter.c \
-    src/core/ext/census/grpc_plugin.c \
-    src/core/ext/census/initialize.c \
-    src/core/ext/census/intrusive_hash_map.c \
-    src/core/ext/census/mlog.c \
-    src/core/ext/census/operation.c \
-    src/core/ext/census/placeholders.c \
-    src/core/ext/census/resource.c \
-    src/core/ext/census/trace_context.c \
-    src/core/ext/census/tracing.c \
-    src/core/ext/filters/max_age/max_age_filter.c \
-    src/core/ext/filters/message_size/message_size_filter.c \
-    src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c \
-    src/core/ext/filters/workarounds/workaround_utils.c \
-    src/core/plugin_registry/grpc_plugin_registry.c \
+    src/core/ext/census/grpc_context.cc \
+    src/core/ext/census/grpc_filter.cc \
+    src/core/ext/census/grpc_plugin.cc \
+    src/core/ext/census/initialize.cc \
+    src/core/ext/census/intrusive_hash_map.cc \
+    src/core/ext/census/mlog.cc \
+    src/core/ext/census/operation.cc \
+    src/core/ext/census/placeholders.cc \
+    src/core/ext/census/resource.cc \
+    src/core/ext/census/trace_context.cc \
+    src/core/ext/census/tracing.cc \
+    src/core/ext/filters/max_age/max_age_filter.cc \
+    src/core/ext/filters/message_size/message_size_filter.cc \
+    src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc \
+    src/core/ext/filters/workarounds/workaround_utils.cc \
+    src/core/plugin_registry/grpc_plugin_registry.cc \
     src/boringssl/err_data.c \
     third_party/boringssl/crypto/aes/aes.c \
     third_party/boringssl/crypto/aes/key_wrap.c \
diff --git a/config.w32 b/config.w32
index 5347bae..3535582 100644
--- a/config.w32
+++ b/config.w32
@@ -16,313 +16,313 @@
     "src\\php\\ext\\grpc\\server.c " +
     "src\\php\\ext\\grpc\\server_credentials.c " +
     "src\\php\\ext\\grpc\\timeval.c " +
-    "src\\core\\lib\\profiling\\basic_timers.c " +
-    "src\\core\\lib\\profiling\\stap_timers.c " +
-    "src\\core\\lib\\support\\alloc.c " +
-    "src\\core\\lib\\support\\arena.c " +
-    "src\\core\\lib\\support\\atm.c " +
-    "src\\core\\lib\\support\\avl.c " +
-    "src\\core\\lib\\support\\backoff.c " +
-    "src\\core\\lib\\support\\cmdline.c " +
-    "src\\core\\lib\\support\\cpu_iphone.c " +
-    "src\\core\\lib\\support\\cpu_linux.c " +
-    "src\\core\\lib\\support\\cpu_posix.c " +
-    "src\\core\\lib\\support\\cpu_windows.c " +
-    "src\\core\\lib\\support\\env_linux.c " +
-    "src\\core\\lib\\support\\env_posix.c " +
-    "src\\core\\lib\\support\\env_windows.c " +
-    "src\\core\\lib\\support\\histogram.c " +
-    "src\\core\\lib\\support\\host_port.c " +
-    "src\\core\\lib\\support\\log.c " +
-    "src\\core\\lib\\support\\log_android.c " +
-    "src\\core\\lib\\support\\log_linux.c " +
-    "src\\core\\lib\\support\\log_posix.c " +
-    "src\\core\\lib\\support\\log_windows.c " +
-    "src\\core\\lib\\support\\mpscq.c " +
-    "src\\core\\lib\\support\\murmur_hash.c " +
-    "src\\core\\lib\\support\\stack_lockfree.c " +
-    "src\\core\\lib\\support\\string.c " +
-    "src\\core\\lib\\support\\string_posix.c " +
-    "src\\core\\lib\\support\\string_util_windows.c " +
-    "src\\core\\lib\\support\\string_windows.c " +
-    "src\\core\\lib\\support\\subprocess_posix.c " +
-    "src\\core\\lib\\support\\subprocess_windows.c " +
-    "src\\core\\lib\\support\\sync.c " +
-    "src\\core\\lib\\support\\sync_posix.c " +
-    "src\\core\\lib\\support\\sync_windows.c " +
-    "src\\core\\lib\\support\\thd.c " +
-    "src\\core\\lib\\support\\thd_posix.c " +
-    "src\\core\\lib\\support\\thd_windows.c " +
-    "src\\core\\lib\\support\\time.c " +
-    "src\\core\\lib\\support\\time_posix.c " +
-    "src\\core\\lib\\support\\time_precise.c " +
-    "src\\core\\lib\\support\\time_windows.c " +
-    "src\\core\\lib\\support\\tls_pthread.c " +
-    "src\\core\\lib\\support\\tmpfile_msys.c " +
-    "src\\core\\lib\\support\\tmpfile_posix.c " +
-    "src\\core\\lib\\support\\tmpfile_windows.c " +
-    "src\\core\\lib\\support\\wrap_memcpy.c " +
-    "src\\core\\lib\\surface\\init.c " +
-    "src\\core\\lib\\channel\\channel_args.c " +
-    "src\\core\\lib\\channel\\channel_stack.c " +
-    "src\\core\\lib\\channel\\channel_stack_builder.c " +
-    "src\\core\\lib\\channel\\connected_channel.c " +
-    "src\\core\\lib\\channel\\handshaker.c " +
-    "src\\core\\lib\\channel\\handshaker_factory.c " +
-    "src\\core\\lib\\channel\\handshaker_registry.c " +
-    "src\\core\\lib\\compression\\compression.c " +
-    "src\\core\\lib\\compression\\message_compress.c " +
-    "src\\core\\lib\\compression\\stream_compression.c " +
-    "src\\core\\lib\\compression\\stream_compression_gzip.c " +
-    "src\\core\\lib\\compression\\stream_compression_identity.c " +
-    "src\\core\\lib\\debug\\stats.c " +
-    "src\\core\\lib\\debug\\stats_data.c " +
-    "src\\core\\lib\\http\\format_request.c " +
-    "src\\core\\lib\\http\\httpcli.c " +
-    "src\\core\\lib\\http\\parser.c " +
-    "src\\core\\lib\\iomgr\\call_combiner.c " +
-    "src\\core\\lib\\iomgr\\closure.c " +
-    "src\\core\\lib\\iomgr\\combiner.c " +
-    "src\\core\\lib\\iomgr\\endpoint.c " +
-    "src\\core\\lib\\iomgr\\endpoint_pair_posix.c " +
-    "src\\core\\lib\\iomgr\\endpoint_pair_uv.c " +
-    "src\\core\\lib\\iomgr\\endpoint_pair_windows.c " +
-    "src\\core\\lib\\iomgr\\error.c " +
-    "src\\core\\lib\\iomgr\\ev_epoll1_linux.c " +
-    "src\\core\\lib\\iomgr\\ev_epollex_linux.c " +
-    "src\\core\\lib\\iomgr\\ev_epollsig_linux.c " +
-    "src\\core\\lib\\iomgr\\ev_poll_posix.c " +
-    "src\\core\\lib\\iomgr\\ev_posix.c " +
-    "src\\core\\lib\\iomgr\\ev_windows.c " +
-    "src\\core\\lib\\iomgr\\exec_ctx.c " +
-    "src\\core\\lib\\iomgr\\executor.c " +
-    "src\\core\\lib\\iomgr\\gethostname_fallback.c " +
-    "src\\core\\lib\\iomgr\\gethostname_host_name_max.c " +
-    "src\\core\\lib\\iomgr\\gethostname_sysconf.c " +
-    "src\\core\\lib\\iomgr\\iocp_windows.c " +
-    "src\\core\\lib\\iomgr\\iomgr.c " +
-    "src\\core\\lib\\iomgr\\iomgr_posix.c " +
-    "src\\core\\lib\\iomgr\\iomgr_uv.c " +
-    "src\\core\\lib\\iomgr\\iomgr_windows.c " +
-    "src\\core\\lib\\iomgr\\is_epollexclusive_available.c " +
-    "src\\core\\lib\\iomgr\\load_file.c " +
-    "src\\core\\lib\\iomgr\\lockfree_event.c " +
-    "src\\core\\lib\\iomgr\\network_status_tracker.c " +
-    "src\\core\\lib\\iomgr\\polling_entity.c " +
-    "src\\core\\lib\\iomgr\\pollset_set_uv.c " +
-    "src\\core\\lib\\iomgr\\pollset_set_windows.c " +
-    "src\\core\\lib\\iomgr\\pollset_uv.c " +
-    "src\\core\\lib\\iomgr\\pollset_windows.c " +
-    "src\\core\\lib\\iomgr\\resolve_address_posix.c " +
-    "src\\core\\lib\\iomgr\\resolve_address_uv.c " +
-    "src\\core\\lib\\iomgr\\resolve_address_windows.c " +
-    "src\\core\\lib\\iomgr\\resource_quota.c " +
-    "src\\core\\lib\\iomgr\\sockaddr_utils.c " +
-    "src\\core\\lib\\iomgr\\socket_factory_posix.c " +
-    "src\\core\\lib\\iomgr\\socket_mutator.c " +
-    "src\\core\\lib\\iomgr\\socket_utils_common_posix.c " +
-    "src\\core\\lib\\iomgr\\socket_utils_linux.c " +
-    "src\\core\\lib\\iomgr\\socket_utils_posix.c " +
-    "src\\core\\lib\\iomgr\\socket_utils_uv.c " +
-    "src\\core\\lib\\iomgr\\socket_utils_windows.c " +
-    "src\\core\\lib\\iomgr\\socket_windows.c " +
-    "src\\core\\lib\\iomgr\\tcp_client_posix.c " +
-    "src\\core\\lib\\iomgr\\tcp_client_uv.c " +
-    "src\\core\\lib\\iomgr\\tcp_client_windows.c " +
-    "src\\core\\lib\\iomgr\\tcp_posix.c " +
-    "src\\core\\lib\\iomgr\\tcp_server_posix.c " +
-    "src\\core\\lib\\iomgr\\tcp_server_utils_posix_common.c " +
-    "src\\core\\lib\\iomgr\\tcp_server_utils_posix_ifaddrs.c " +
-    "src\\core\\lib\\iomgr\\tcp_server_utils_posix_noifaddrs.c " +
-    "src\\core\\lib\\iomgr\\tcp_server_uv.c " +
-    "src\\core\\lib\\iomgr\\tcp_server_windows.c " +
-    "src\\core\\lib\\iomgr\\tcp_uv.c " +
-    "src\\core\\lib\\iomgr\\tcp_windows.c " +
-    "src\\core\\lib\\iomgr\\time_averaged_stats.c " +
-    "src\\core\\lib\\iomgr\\timer_generic.c " +
-    "src\\core\\lib\\iomgr\\timer_heap.c " +
-    "src\\core\\lib\\iomgr\\timer_manager.c " +
-    "src\\core\\lib\\iomgr\\timer_uv.c " +
-    "src\\core\\lib\\iomgr\\udp_server.c " +
-    "src\\core\\lib\\iomgr\\unix_sockets_posix.c " +
-    "src\\core\\lib\\iomgr\\unix_sockets_posix_noop.c " +
-    "src\\core\\lib\\iomgr\\wakeup_fd_cv.c " +
-    "src\\core\\lib\\iomgr\\wakeup_fd_eventfd.c " +
-    "src\\core\\lib\\iomgr\\wakeup_fd_nospecial.c " +
-    "src\\core\\lib\\iomgr\\wakeup_fd_pipe.c " +
-    "src\\core\\lib\\iomgr\\wakeup_fd_posix.c " +
-    "src\\core\\lib\\json\\json.c " +
-    "src\\core\\lib\\json\\json_reader.c " +
-    "src\\core\\lib\\json\\json_string.c " +
-    "src\\core\\lib\\json\\json_writer.c " +
-    "src\\core\\lib\\slice\\b64.c " +
-    "src\\core\\lib\\slice\\percent_encoding.c " +
-    "src\\core\\lib\\slice\\slice.c " +
-    "src\\core\\lib\\slice\\slice_buffer.c " +
-    "src\\core\\lib\\slice\\slice_hash_table.c " +
-    "src\\core\\lib\\slice\\slice_intern.c " +
-    "src\\core\\lib\\slice\\slice_string_helpers.c " +
-    "src\\core\\lib\\surface\\alarm.c " +
-    "src\\core\\lib\\surface\\api_trace.c " +
-    "src\\core\\lib\\surface\\byte_buffer.c " +
-    "src\\core\\lib\\surface\\byte_buffer_reader.c " +
-    "src\\core\\lib\\surface\\call.c " +
-    "src\\core\\lib\\surface\\call_details.c " +
-    "src\\core\\lib\\surface\\call_log_batch.c " +
-    "src\\core\\lib\\surface\\channel.c " +
-    "src\\core\\lib\\surface\\channel_init.c " +
-    "src\\core\\lib\\surface\\channel_ping.c " +
-    "src\\core\\lib\\surface\\channel_stack_type.c " +
-    "src\\core\\lib\\surface\\completion_queue.c " +
-    "src\\core\\lib\\surface\\completion_queue_factory.c " +
-    "src\\core\\lib\\surface\\event_string.c " +
+    "src\\core\\lib\\profiling\\basic_timers.cc " +
+    "src\\core\\lib\\profiling\\stap_timers.cc " +
+    "src\\core\\lib\\support\\alloc.cc " +
+    "src\\core\\lib\\support\\arena.cc " +
+    "src\\core\\lib\\support\\atm.cc " +
+    "src\\core\\lib\\support\\avl.cc " +
+    "src\\core\\lib\\support\\backoff.cc " +
+    "src\\core\\lib\\support\\cmdline.cc " +
+    "src\\core\\lib\\support\\cpu_iphone.cc " +
+    "src\\core\\lib\\support\\cpu_linux.cc " +
+    "src\\core\\lib\\support\\cpu_posix.cc " +
+    "src\\core\\lib\\support\\cpu_windows.cc " +
+    "src\\core\\lib\\support\\env_linux.cc " +
+    "src\\core\\lib\\support\\env_posix.cc " +
+    "src\\core\\lib\\support\\env_windows.cc " +
+    "src\\core\\lib\\support\\histogram.cc " +
+    "src\\core\\lib\\support\\host_port.cc " +
+    "src\\core\\lib\\support\\log.cc " +
+    "src\\core\\lib\\support\\log_android.cc " +
+    "src\\core\\lib\\support\\log_linux.cc " +
+    "src\\core\\lib\\support\\log_posix.cc " +
+    "src\\core\\lib\\support\\log_windows.cc " +
+    "src\\core\\lib\\support\\mpscq.cc " +
+    "src\\core\\lib\\support\\murmur_hash.cc " +
+    "src\\core\\lib\\support\\stack_lockfree.cc " +
+    "src\\core\\lib\\support\\string.cc " +
+    "src\\core\\lib\\support\\string_posix.cc " +
+    "src\\core\\lib\\support\\string_util_windows.cc " +
+    "src\\core\\lib\\support\\string_windows.cc " +
+    "src\\core\\lib\\support\\subprocess_posix.cc " +
+    "src\\core\\lib\\support\\subprocess_windows.cc " +
+    "src\\core\\lib\\support\\sync.cc " +
+    "src\\core\\lib\\support\\sync_posix.cc " +
+    "src\\core\\lib\\support\\sync_windows.cc " +
+    "src\\core\\lib\\support\\thd.cc " +
+    "src\\core\\lib\\support\\thd_posix.cc " +
+    "src\\core\\lib\\support\\thd_windows.cc " +
+    "src\\core\\lib\\support\\time.cc " +
+    "src\\core\\lib\\support\\time_posix.cc " +
+    "src\\core\\lib\\support\\time_precise.cc " +
+    "src\\core\\lib\\support\\time_windows.cc " +
+    "src\\core\\lib\\support\\tls_pthread.cc " +
+    "src\\core\\lib\\support\\tmpfile_msys.cc " +
+    "src\\core\\lib\\support\\tmpfile_posix.cc " +
+    "src\\core\\lib\\support\\tmpfile_windows.cc " +
+    "src\\core\\lib\\support\\wrap_memcpy.cc " +
+    "src\\core\\lib\\surface\\init.cc " +
+    "src\\core\\lib\\channel\\channel_args.cc " +
+    "src\\core\\lib\\channel\\channel_stack.cc " +
+    "src\\core\\lib\\channel\\channel_stack_builder.cc " +
+    "src\\core\\lib\\channel\\connected_channel.cc " +
+    "src\\core\\lib\\channel\\handshaker.cc " +
+    "src\\core\\lib\\channel\\handshaker_factory.cc " +
+    "src\\core\\lib\\channel\\handshaker_registry.cc " +
+    "src\\core\\lib\\compression\\compression.cc " +
+    "src\\core\\lib\\compression\\message_compress.cc " +
+    "src\\core\\lib\\compression\\stream_compression.cc " +
+    "src\\core\\lib\\compression\\stream_compression_gzip.cc " +
+    "src\\core\\lib\\compression\\stream_compression_identity.cc " +
+    "src\\core\\lib\\debug\\stats.cc " +
+    "src\\core\\lib\\debug\\stats_data.cc " +
+    "src\\core\\lib\\http\\format_request.cc " +
+    "src\\core\\lib\\http\\httpcli.cc " +
+    "src\\core\\lib\\http\\parser.cc " +
+    "src\\core\\lib\\iomgr\\call_combiner.cc " +
+    "src\\core\\lib\\iomgr\\closure.cc " +
+    "src\\core\\lib\\iomgr\\combiner.cc " +
+    "src\\core\\lib\\iomgr\\endpoint.cc " +
+    "src\\core\\lib\\iomgr\\endpoint_pair_posix.cc " +
+    "src\\core\\lib\\iomgr\\endpoint_pair_uv.cc " +
+    "src\\core\\lib\\iomgr\\endpoint_pair_windows.cc " +
+    "src\\core\\lib\\iomgr\\error.cc " +
+    "src\\core\\lib\\iomgr\\ev_epoll1_linux.cc " +
+    "src\\core\\lib\\iomgr\\ev_epollex_linux.cc " +
+    "src\\core\\lib\\iomgr\\ev_epollsig_linux.cc " +
+    "src\\core\\lib\\iomgr\\ev_poll_posix.cc " +
+    "src\\core\\lib\\iomgr\\ev_posix.cc " +
+    "src\\core\\lib\\iomgr\\ev_windows.cc " +
+    "src\\core\\lib\\iomgr\\exec_ctx.cc " +
+    "src\\core\\lib\\iomgr\\executor.cc " +
+    "src\\core\\lib\\iomgr\\gethostname_fallback.cc " +
+    "src\\core\\lib\\iomgr\\gethostname_host_name_max.cc " +
+    "src\\core\\lib\\iomgr\\gethostname_sysconf.cc " +
+    "src\\core\\lib\\iomgr\\iocp_windows.cc " +
+    "src\\core\\lib\\iomgr\\iomgr.cc " +
+    "src\\core\\lib\\iomgr\\iomgr_posix.cc " +
+    "src\\core\\lib\\iomgr\\iomgr_uv.cc " +
+    "src\\core\\lib\\iomgr\\iomgr_windows.cc " +
+    "src\\core\\lib\\iomgr\\is_epollexclusive_available.cc " +
+    "src\\core\\lib\\iomgr\\load_file.cc " +
+    "src\\core\\lib\\iomgr\\lockfree_event.cc " +
+    "src\\core\\lib\\iomgr\\network_status_tracker.cc " +
+    "src\\core\\lib\\iomgr\\polling_entity.cc " +
+    "src\\core\\lib\\iomgr\\pollset_set_uv.cc " +
+    "src\\core\\lib\\iomgr\\pollset_set_windows.cc " +
+    "src\\core\\lib\\iomgr\\pollset_uv.cc " +
+    "src\\core\\lib\\iomgr\\pollset_windows.cc " +
+    "src\\core\\lib\\iomgr\\resolve_address_posix.cc " +
+    "src\\core\\lib\\iomgr\\resolve_address_uv.cc " +
+    "src\\core\\lib\\iomgr\\resolve_address_windows.cc " +
+    "src\\core\\lib\\iomgr\\resource_quota.cc " +
+    "src\\core\\lib\\iomgr\\sockaddr_utils.cc " +
+    "src\\core\\lib\\iomgr\\socket_factory_posix.cc " +
+    "src\\core\\lib\\iomgr\\socket_mutator.cc " +
+    "src\\core\\lib\\iomgr\\socket_utils_common_posix.cc " +
+    "src\\core\\lib\\iomgr\\socket_utils_linux.cc " +
+    "src\\core\\lib\\iomgr\\socket_utils_posix.cc " +
+    "src\\core\\lib\\iomgr\\socket_utils_uv.cc " +
+    "src\\core\\lib\\iomgr\\socket_utils_windows.cc " +
+    "src\\core\\lib\\iomgr\\socket_windows.cc " +
+    "src\\core\\lib\\iomgr\\tcp_client_posix.cc " +
+    "src\\core\\lib\\iomgr\\tcp_client_uv.cc " +
+    "src\\core\\lib\\iomgr\\tcp_client_windows.cc " +
+    "src\\core\\lib\\iomgr\\tcp_posix.cc " +
+    "src\\core\\lib\\iomgr\\tcp_server_posix.cc " +
+    "src\\core\\lib\\iomgr\\tcp_server_utils_posix_common.cc " +
+    "src\\core\\lib\\iomgr\\tcp_server_utils_posix_ifaddrs.cc " +
+    "src\\core\\lib\\iomgr\\tcp_server_utils_posix_noifaddrs.cc " +
+    "src\\core\\lib\\iomgr\\tcp_server_uv.cc " +
+    "src\\core\\lib\\iomgr\\tcp_server_windows.cc " +
+    "src\\core\\lib\\iomgr\\tcp_uv.cc " +
+    "src\\core\\lib\\iomgr\\tcp_windows.cc " +
+    "src\\core\\lib\\iomgr\\time_averaged_stats.cc " +
+    "src\\core\\lib\\iomgr\\timer_generic.cc " +
+    "src\\core\\lib\\iomgr\\timer_heap.cc " +
+    "src\\core\\lib\\iomgr\\timer_manager.cc " +
+    "src\\core\\lib\\iomgr\\timer_uv.cc " +
+    "src\\core\\lib\\iomgr\\udp_server.cc " +
+    "src\\core\\lib\\iomgr\\unix_sockets_posix.cc " +
+    "src\\core\\lib\\iomgr\\unix_sockets_posix_noop.cc " +
+    "src\\core\\lib\\iomgr\\wakeup_fd_cv.cc " +
+    "src\\core\\lib\\iomgr\\wakeup_fd_eventfd.cc " +
+    "src\\core\\lib\\iomgr\\wakeup_fd_nospecial.cc " +
+    "src\\core\\lib\\iomgr\\wakeup_fd_pipe.cc " +
+    "src\\core\\lib\\iomgr\\wakeup_fd_posix.cc " +
+    "src\\core\\lib\\json\\json.cc " +
+    "src\\core\\lib\\json\\json_reader.cc " +
+    "src\\core\\lib\\json\\json_string.cc " +
+    "src\\core\\lib\\json\\json_writer.cc " +
+    "src\\core\\lib\\slice\\b64.cc " +
+    "src\\core\\lib\\slice\\percent_encoding.cc " +
+    "src\\core\\lib\\slice\\slice.cc " +
+    "src\\core\\lib\\slice\\slice_buffer.cc " +
+    "src\\core\\lib\\slice\\slice_hash_table.cc " +
+    "src\\core\\lib\\slice\\slice_intern.cc " +
+    "src\\core\\lib\\slice\\slice_string_helpers.cc " +
+    "src\\core\\lib\\surface\\alarm.cc " +
+    "src\\core\\lib\\surface\\api_trace.cc " +
+    "src\\core\\lib\\surface\\byte_buffer.cc " +
+    "src\\core\\lib\\surface\\byte_buffer_reader.cc " +
+    "src\\core\\lib\\surface\\call.cc " +
+    "src\\core\\lib\\surface\\call_details.cc " +
+    "src\\core\\lib\\surface\\call_log_batch.cc " +
+    "src\\core\\lib\\surface\\channel.cc " +
+    "src\\core\\lib\\surface\\channel_init.cc " +
+    "src\\core\\lib\\surface\\channel_ping.cc " +
+    "src\\core\\lib\\surface\\channel_stack_type.cc " +
+    "src\\core\\lib\\surface\\completion_queue.cc " +
+    "src\\core\\lib\\surface\\completion_queue_factory.cc " +
+    "src\\core\\lib\\surface\\event_string.cc " +
     "src\\core\\lib\\surface\\lame_client.cc " +
-    "src\\core\\lib\\surface\\metadata_array.c " +
-    "src\\core\\lib\\surface\\server.c " +
-    "src\\core\\lib\\surface\\validate_metadata.c " +
-    "src\\core\\lib\\surface\\version.c " +
-    "src\\core\\lib\\transport\\bdp_estimator.c " +
-    "src\\core\\lib\\transport\\byte_stream.c " +
-    "src\\core\\lib\\transport\\connectivity_state.c " +
-    "src\\core\\lib\\transport\\error_utils.c " +
-    "src\\core\\lib\\transport\\metadata.c " +
-    "src\\core\\lib\\transport\\metadata_batch.c " +
-    "src\\core\\lib\\transport\\pid_controller.c " +
-    "src\\core\\lib\\transport\\service_config.c " +
-    "src\\core\\lib\\transport\\static_metadata.c " +
-    "src\\core\\lib\\transport\\status_conversion.c " +
-    "src\\core\\lib\\transport\\timeout_encoding.c " +
-    "src\\core\\lib\\transport\\transport.c " +
-    "src\\core\\lib\\transport\\transport_op_string.c " +
-    "src\\core\\lib\\debug\\trace.c " +
-    "src\\core\\ext\\transport\\chttp2\\server\\secure\\server_secure_chttp2.c " +
-    "src\\core\\ext\\transport\\chttp2\\transport\\bin_decoder.c " +
-    "src\\core\\ext\\transport\\chttp2\\transport\\bin_encoder.c " +
-    "src\\core\\ext\\transport\\chttp2\\transport\\chttp2_plugin.c " +
-    "src\\core\\ext\\transport\\chttp2\\transport\\chttp2_transport.c " +
-    "src\\core\\ext\\transport\\chttp2\\transport\\flow_control.c " +
-    "src\\core\\ext\\transport\\chttp2\\transport\\frame_data.c " +
-    "src\\core\\ext\\transport\\chttp2\\transport\\frame_goaway.c " +
-    "src\\core\\ext\\transport\\chttp2\\transport\\frame_ping.c " +
-    "src\\core\\ext\\transport\\chttp2\\transport\\frame_rst_stream.c " +
-    "src\\core\\ext\\transport\\chttp2\\transport\\frame_settings.c " +
-    "src\\core\\ext\\transport\\chttp2\\transport\\frame_window_update.c " +
-    "src\\core\\ext\\transport\\chttp2\\transport\\hpack_encoder.c " +
-    "src\\core\\ext\\transport\\chttp2\\transport\\hpack_parser.c " +
-    "src\\core\\ext\\transport\\chttp2\\transport\\hpack_table.c " +
-    "src\\core\\ext\\transport\\chttp2\\transport\\http2_settings.c " +
-    "src\\core\\ext\\transport\\chttp2\\transport\\huffsyms.c " +
-    "src\\core\\ext\\transport\\chttp2\\transport\\incoming_metadata.c " +
-    "src\\core\\ext\\transport\\chttp2\\transport\\parsing.c " +
-    "src\\core\\ext\\transport\\chttp2\\transport\\stream_lists.c " +
-    "src\\core\\ext\\transport\\chttp2\\transport\\stream_map.c " +
-    "src\\core\\ext\\transport\\chttp2\\transport\\varint.c " +
-    "src\\core\\ext\\transport\\chttp2\\transport\\writing.c " +
-    "src\\core\\ext\\transport\\chttp2\\alpn\\alpn.c " +
-    "src\\core\\ext\\filters\\http\\client\\http_client_filter.c " +
-    "src\\core\\ext\\filters\\http\\http_filters_plugin.c " +
-    "src\\core\\ext\\filters\\http\\message_compress\\message_compress_filter.c " +
-    "src\\core\\ext\\filters\\http\\server\\http_server_filter.c " +
-    "src\\core\\lib\\http\\httpcli_security_connector.c " +
-    "src\\core\\lib\\security\\context\\security_context.c " +
-    "src\\core\\lib\\security\\credentials\\composite\\composite_credentials.c " +
-    "src\\core\\lib\\security\\credentials\\credentials.c " +
-    "src\\core\\lib\\security\\credentials\\credentials_metadata.c " +
-    "src\\core\\lib\\security\\credentials\\fake\\fake_credentials.c " +
-    "src\\core\\lib\\security\\credentials\\google_default\\credentials_generic.c " +
-    "src\\core\\lib\\security\\credentials\\google_default\\google_default_credentials.c " +
-    "src\\core\\lib\\security\\credentials\\iam\\iam_credentials.c " +
-    "src\\core\\lib\\security\\credentials\\jwt\\json_token.c " +
-    "src\\core\\lib\\security\\credentials\\jwt\\jwt_credentials.c " +
-    "src\\core\\lib\\security\\credentials\\jwt\\jwt_verifier.c " +
-    "src\\core\\lib\\security\\credentials\\oauth2\\oauth2_credentials.c " +
-    "src\\core\\lib\\security\\credentials\\plugin\\plugin_credentials.c " +
-    "src\\core\\lib\\security\\credentials\\ssl\\ssl_credentials.c " +
-    "src\\core\\lib\\security\\transport\\client_auth_filter.c " +
-    "src\\core\\lib\\security\\transport\\lb_targets_info.c " +
-    "src\\core\\lib\\security\\transport\\secure_endpoint.c " +
-    "src\\core\\lib\\security\\transport\\security_connector.c " +
-    "src\\core\\lib\\security\\transport\\security_handshaker.c " +
-    "src\\core\\lib\\security\\transport\\server_auth_filter.c " +
-    "src\\core\\lib\\security\\transport\\tsi_error.c " +
-    "src\\core\\lib\\security\\util\\json_util.c " +
-    "src\\core\\lib\\surface\\init_secure.c " +
-    "src\\core\\tsi\\fake_transport_security.c " +
-    "src\\core\\tsi\\gts_transport_security.c " +
-    "src\\core\\tsi\\ssl_transport_security.c " +
-    "src\\core\\tsi\\transport_security_grpc.c " +
-    "src\\core\\tsi\\transport_security.c " +
-    "src\\core\\tsi\\transport_security_adapter.c " +
-    "src\\core\\ext\\transport\\chttp2\\server\\chttp2_server.c " +
-    "src\\core\\ext\\transport\\chttp2\\client\\secure\\secure_channel_create.c " +
-    "src\\core\\ext\\filters\\client_channel\\channel_connectivity.c " +
-    "src\\core\\ext\\filters\\client_channel\\client_channel.c " +
-    "src\\core\\ext\\filters\\client_channel\\client_channel_factory.c " +
-    "src\\core\\ext\\filters\\client_channel\\client_channel_plugin.c " +
-    "src\\core\\ext\\filters\\client_channel\\connector.c " +
-    "src\\core\\ext\\filters\\client_channel\\http_connect_handshaker.c " +
-    "src\\core\\ext\\filters\\client_channel\\http_proxy.c " +
-    "src\\core\\ext\\filters\\client_channel\\lb_policy.c " +
-    "src\\core\\ext\\filters\\client_channel\\lb_policy_factory.c " +
-    "src\\core\\ext\\filters\\client_channel\\lb_policy_registry.c " +
-    "src\\core\\ext\\filters\\client_channel\\parse_address.c " +
-    "src\\core\\ext\\filters\\client_channel\\proxy_mapper.c " +
-    "src\\core\\ext\\filters\\client_channel\\proxy_mapper_registry.c " +
-    "src\\core\\ext\\filters\\client_channel\\resolver.c " +
-    "src\\core\\ext\\filters\\client_channel\\resolver_factory.c " +
-    "src\\core\\ext\\filters\\client_channel\\resolver_registry.c " +
-    "src\\core\\ext\\filters\\client_channel\\retry_throttle.c " +
-    "src\\core\\ext\\filters\\client_channel\\subchannel.c " +
-    "src\\core\\ext\\filters\\client_channel\\subchannel_index.c " +
-    "src\\core\\ext\\filters\\client_channel\\uri_parser.c " +
-    "src\\core\\ext\\filters\\deadline\\deadline_filter.c " +
-    "src\\core\\ext\\transport\\chttp2\\client\\chttp2_connector.c " +
-    "src\\core\\ext\\transport\\chttp2\\server\\insecure\\server_chttp2.c " +
-    "src\\core\\ext\\transport\\chttp2\\server\\insecure\\server_chttp2_posix.c " +
-    "src\\core\\ext\\transport\\chttp2\\client\\insecure\\channel_create.c " +
-    "src\\core\\ext\\transport\\chttp2\\client\\insecure\\channel_create_posix.c " +
-    "src\\core\\ext\\transport\\inproc\\inproc_plugin.c " +
-    "src\\core\\ext\\transport\\inproc\\inproc_transport.c " +
-    "src\\core\\ext\\filters\\client_channel\\lb_policy\\grpclb\\client_load_reporting_filter.c " +
-    "src\\core\\ext\\filters\\client_channel\\lb_policy\\grpclb\\grpclb.c " +
-    "src\\core\\ext\\filters\\client_channel\\lb_policy\\grpclb\\grpclb_channel_secure.c " +
-    "src\\core\\ext\\filters\\client_channel\\lb_policy\\grpclb\\grpclb_client_stats.c " +
-    "src\\core\\ext\\filters\\client_channel\\lb_policy\\grpclb\\load_balancer_api.c " +
+    "src\\core\\lib\\surface\\metadata_array.cc " +
+    "src\\core\\lib\\surface\\server.cc " +
+    "src\\core\\lib\\surface\\validate_metadata.cc " +
+    "src\\core\\lib\\surface\\version.cc " +
+    "src\\core\\lib\\transport\\bdp_estimator.cc " +
+    "src\\core\\lib\\transport\\byte_stream.cc " +
+    "src\\core\\lib\\transport\\connectivity_state.cc " +
+    "src\\core\\lib\\transport\\error_utils.cc " +
+    "src\\core\\lib\\transport\\metadata.cc " +
+    "src\\core\\lib\\transport\\metadata_batch.cc " +
+    "src\\core\\lib\\transport\\pid_controller.cc " +
+    "src\\core\\lib\\transport\\service_config.cc " +
+    "src\\core\\lib\\transport\\static_metadata.cc " +
+    "src\\core\\lib\\transport\\status_conversion.cc " +
+    "src\\core\\lib\\transport\\timeout_encoding.cc " +
+    "src\\core\\lib\\transport\\transport.cc " +
+    "src\\core\\lib\\transport\\transport_op_string.cc " +
+    "src\\core\\lib\\debug\\trace.cc " +
+    "src\\core\\ext\\transport\\chttp2\\server\\secure\\server_secure_chttp2.cc " +
+    "src\\core\\ext\\transport\\chttp2\\transport\\bin_decoder.cc " +
+    "src\\core\\ext\\transport\\chttp2\\transport\\bin_encoder.cc " +
+    "src\\core\\ext\\transport\\chttp2\\transport\\chttp2_plugin.cc " +
+    "src\\core\\ext\\transport\\chttp2\\transport\\chttp2_transport.cc " +
+    "src\\core\\ext\\transport\\chttp2\\transport\\flow_control.cc " +
+    "src\\core\\ext\\transport\\chttp2\\transport\\frame_data.cc " +
+    "src\\core\\ext\\transport\\chttp2\\transport\\frame_goaway.cc " +
+    "src\\core\\ext\\transport\\chttp2\\transport\\frame_ping.cc " +
+    "src\\core\\ext\\transport\\chttp2\\transport\\frame_rst_stream.cc " +
+    "src\\core\\ext\\transport\\chttp2\\transport\\frame_settings.cc " +
+    "src\\core\\ext\\transport\\chttp2\\transport\\frame_window_update.cc " +
+    "src\\core\\ext\\transport\\chttp2\\transport\\hpack_encoder.cc " +
+    "src\\core\\ext\\transport\\chttp2\\transport\\hpack_parser.cc " +
+    "src\\core\\ext\\transport\\chttp2\\transport\\hpack_table.cc " +
+    "src\\core\\ext\\transport\\chttp2\\transport\\http2_settings.cc " +
+    "src\\core\\ext\\transport\\chttp2\\transport\\huffsyms.cc " +
+    "src\\core\\ext\\transport\\chttp2\\transport\\incoming_metadata.cc " +
+    "src\\core\\ext\\transport\\chttp2\\transport\\parsing.cc " +
+    "src\\core\\ext\\transport\\chttp2\\transport\\stream_lists.cc " +
+    "src\\core\\ext\\transport\\chttp2\\transport\\stream_map.cc " +
+    "src\\core\\ext\\transport\\chttp2\\transport\\varint.cc " +
+    "src\\core\\ext\\transport\\chttp2\\transport\\writing.cc " +
+    "src\\core\\ext\\transport\\chttp2\\alpn\\alpn.cc " +
+    "src\\core\\ext\\filters\\http\\client\\http_client_filter.cc " +
+    "src\\core\\ext\\filters\\http\\http_filters_plugin.cc " +
+    "src\\core\\ext\\filters\\http\\message_compress\\message_compress_filter.cc " +
+    "src\\core\\ext\\filters\\http\\server\\http_server_filter.cc " +
+    "src\\core\\lib\\http\\httpcli_security_connector.cc " +
+    "src\\core\\lib\\security\\context\\security_context.cc " +
+    "src\\core\\lib\\security\\credentials\\composite\\composite_credentials.cc " +
+    "src\\core\\lib\\security\\credentials\\credentials.cc " +
+    "src\\core\\lib\\security\\credentials\\credentials_metadata.cc " +
+    "src\\core\\lib\\security\\credentials\\fake\\fake_credentials.cc " +
+    "src\\core\\lib\\security\\credentials\\google_default\\credentials_generic.cc " +
+    "src\\core\\lib\\security\\credentials\\google_default\\google_default_credentials.cc " +
+    "src\\core\\lib\\security\\credentials\\iam\\iam_credentials.cc " +
+    "src\\core\\lib\\security\\credentials\\jwt\\json_token.cc " +
+    "src\\core\\lib\\security\\credentials\\jwt\\jwt_credentials.cc " +
+    "src\\core\\lib\\security\\credentials\\jwt\\jwt_verifier.cc " +
+    "src\\core\\lib\\security\\credentials\\oauth2\\oauth2_credentials.cc " +
+    "src\\core\\lib\\security\\credentials\\plugin\\plugin_credentials.cc " +
+    "src\\core\\lib\\security\\credentials\\ssl\\ssl_credentials.cc " +
+    "src\\core\\lib\\security\\transport\\client_auth_filter.cc " +
+    "src\\core\\lib\\security\\transport\\lb_targets_info.cc " +
+    "src\\core\\lib\\security\\transport\\secure_endpoint.cc " +
+    "src\\core\\lib\\security\\transport\\security_connector.cc " +
+    "src\\core\\lib\\security\\transport\\security_handshaker.cc " +
+    "src\\core\\lib\\security\\transport\\server_auth_filter.cc " +
+    "src\\core\\lib\\security\\transport\\tsi_error.cc " +
+    "src\\core\\lib\\security\\util\\json_util.cc " +
+    "src\\core\\lib\\surface\\init_secure.cc " +
+    "src\\core\\tsi\\fake_transport_security.cc " +
+    "src\\core\\tsi\\gts_transport_security.cc " +
+    "src\\core\\tsi\\ssl_transport_security.cc " +
+    "src\\core\\tsi\\transport_security_grpc.cc " +
+    "src\\core\\tsi\\transport_security.cc " +
+    "src\\core\\tsi\\transport_security_adapter.cc " +
+    "src\\core\\ext\\transport\\chttp2\\server\\chttp2_server.cc " +
+    "src\\core\\ext\\transport\\chttp2\\client\\secure\\secure_channel_create.cc " +
+    "src\\core\\ext\\filters\\client_channel\\channel_connectivity.cc " +
+    "src\\core\\ext\\filters\\client_channel\\client_channel.cc " +
+    "src\\core\\ext\\filters\\client_channel\\client_channel_factory.cc " +
+    "src\\core\\ext\\filters\\client_channel\\client_channel_plugin.cc " +
+    "src\\core\\ext\\filters\\client_channel\\connector.cc " +
+    "src\\core\\ext\\filters\\client_channel\\http_connect_handshaker.cc " +
+    "src\\core\\ext\\filters\\client_channel\\http_proxy.cc " +
+    "src\\core\\ext\\filters\\client_channel\\lb_policy.cc " +
+    "src\\core\\ext\\filters\\client_channel\\lb_policy_factory.cc " +
+    "src\\core\\ext\\filters\\client_channel\\lb_policy_registry.cc " +
+    "src\\core\\ext\\filters\\client_channel\\parse_address.cc " +
+    "src\\core\\ext\\filters\\client_channel\\proxy_mapper.cc " +
+    "src\\core\\ext\\filters\\client_channel\\proxy_mapper_registry.cc " +
+    "src\\core\\ext\\filters\\client_channel\\resolver.cc " +
+    "src\\core\\ext\\filters\\client_channel\\resolver_factory.cc " +
+    "src\\core\\ext\\filters\\client_channel\\resolver_registry.cc " +
+    "src\\core\\ext\\filters\\client_channel\\retry_throttle.cc " +
+    "src\\core\\ext\\filters\\client_channel\\subchannel.cc " +
+    "src\\core\\ext\\filters\\client_channel\\subchannel_index.cc " +
+    "src\\core\\ext\\filters\\client_channel\\uri_parser.cc " +
+    "src\\core\\ext\\filters\\deadline\\deadline_filter.cc " +
+    "src\\core\\ext\\transport\\chttp2\\client\\chttp2_connector.cc " +
+    "src\\core\\ext\\transport\\chttp2\\server\\insecure\\server_chttp2.cc " +
+    "src\\core\\ext\\transport\\chttp2\\server\\insecure\\server_chttp2_posix.cc " +
+    "src\\core\\ext\\transport\\chttp2\\client\\insecure\\channel_create.cc " +
+    "src\\core\\ext\\transport\\chttp2\\client\\insecure\\channel_create_posix.cc " +
+    "src\\core\\ext\\transport\\inproc\\inproc_plugin.cc " +
+    "src\\core\\ext\\transport\\inproc\\inproc_transport.cc " +
+    "src\\core\\ext\\filters\\client_channel\\lb_policy\\grpclb\\client_load_reporting_filter.cc " +
+    "src\\core\\ext\\filters\\client_channel\\lb_policy\\grpclb\\grpclb.cc " +
+    "src\\core\\ext\\filters\\client_channel\\lb_policy\\grpclb\\grpclb_channel_secure.cc " +
+    "src\\core\\ext\\filters\\client_channel\\lb_policy\\grpclb\\grpclb_client_stats.cc " +
+    "src\\core\\ext\\filters\\client_channel\\lb_policy\\grpclb\\load_balancer_api.cc " +
     "src\\core\\ext\\filters\\client_channel\\lb_policy\\grpclb\\proto\\grpc\\lb\\v1\\load_balancer.pb.c " +
     "third_party\\nanopb\\pb_common.c " +
     "third_party\\nanopb\\pb_decode.c " +
     "third_party\\nanopb\\pb_encode.c " +
-    "src\\core\\ext\\filters\\client_channel\\resolver\\fake\\fake_resolver.c " +
-    "src\\core\\ext\\filters\\client_channel\\lb_policy\\pick_first\\pick_first.c " +
-    "src\\core\\ext\\filters\\client_channel\\lb_policy\\round_robin\\round_robin.c " +
-    "src\\core\\ext\\filters\\client_channel\\resolver\\dns\\c_ares\\dns_resolver_ares.c " +
-    "src\\core\\ext\\filters\\client_channel\\resolver\\dns\\c_ares\\grpc_ares_ev_driver_posix.c " +
-    "src\\core\\ext\\filters\\client_channel\\resolver\\dns\\c_ares\\grpc_ares_wrapper.c " +
-    "src\\core\\ext\\filters\\client_channel\\resolver\\dns\\c_ares\\grpc_ares_wrapper_fallback.c " +
-    "src\\core\\ext\\filters\\client_channel\\resolver\\dns\\native\\dns_resolver.c " +
-    "src\\core\\ext\\filters\\client_channel\\resolver\\sockaddr\\sockaddr_resolver.c " +
-    "src\\core\\ext\\filters\\load_reporting\\server_load_reporting_filter.c " +
-    "src\\core\\ext\\filters\\load_reporting\\server_load_reporting_plugin.c " +
-    "src\\core\\ext\\census\\base_resources.c " +
-    "src\\core\\ext\\census\\context.c " +
+    "src\\core\\ext\\filters\\client_channel\\resolver\\fake\\fake_resolver.cc " +
+    "src\\core\\ext\\filters\\client_channel\\lb_policy\\pick_first\\pick_first.cc " +
+    "src\\core\\ext\\filters\\client_channel\\lb_policy\\round_robin\\round_robin.cc " +
+    "src\\core\\ext\\filters\\client_channel\\resolver\\dns\\c_ares\\dns_resolver_ares.cc " +
+    "src\\core\\ext\\filters\\client_channel\\resolver\\dns\\c_ares\\grpc_ares_ev_driver_posix.cc " +
+    "src\\core\\ext\\filters\\client_channel\\resolver\\dns\\c_ares\\grpc_ares_wrapper.cc " +
+    "src\\core\\ext\\filters\\client_channel\\resolver\\dns\\c_ares\\grpc_ares_wrapper_fallback.cc " +
+    "src\\core\\ext\\filters\\client_channel\\resolver\\dns\\native\\dns_resolver.cc " +
+    "src\\core\\ext\\filters\\client_channel\\resolver\\sockaddr\\sockaddr_resolver.cc " +
+    "src\\core\\ext\\filters\\load_reporting\\server_load_reporting_filter.cc " +
+    "src\\core\\ext\\filters\\load_reporting\\server_load_reporting_plugin.cc " +
+    "src\\core\\ext\\census\\base_resources.cc " +
+    "src\\core\\ext\\census\\context.cc " +
     "src\\core\\ext\\census\\gen\\census.pb.c " +
     "src\\core\\ext\\census\\gen\\trace_context.pb.c " +
-    "src\\core\\ext\\census\\grpc_context.c " +
-    "src\\core\\ext\\census\\grpc_filter.c " +
-    "src\\core\\ext\\census\\grpc_plugin.c " +
-    "src\\core\\ext\\census\\initialize.c " +
-    "src\\core\\ext\\census\\intrusive_hash_map.c " +
-    "src\\core\\ext\\census\\mlog.c " +
-    "src\\core\\ext\\census\\operation.c " +
-    "src\\core\\ext\\census\\placeholders.c " +
-    "src\\core\\ext\\census\\resource.c " +
-    "src\\core\\ext\\census\\trace_context.c " +
-    "src\\core\\ext\\census\\tracing.c " +
-    "src\\core\\ext\\filters\\max_age\\max_age_filter.c " +
-    "src\\core\\ext\\filters\\message_size\\message_size_filter.c " +
-    "src\\core\\ext\\filters\\workarounds\\workaround_cronet_compression_filter.c " +
-    "src\\core\\ext\\filters\\workarounds\\workaround_utils.c " +
-    "src\\core\\plugin_registry\\grpc_plugin_registry.c " +
+    "src\\core\\ext\\census\\grpc_context.cc " +
+    "src\\core\\ext\\census\\grpc_filter.cc " +
+    "src\\core\\ext\\census\\grpc_plugin.cc " +
+    "src\\core\\ext\\census\\initialize.cc " +
+    "src\\core\\ext\\census\\intrusive_hash_map.cc " +
+    "src\\core\\ext\\census\\mlog.cc " +
+    "src\\core\\ext\\census\\operation.cc " +
+    "src\\core\\ext\\census\\placeholders.cc " +
+    "src\\core\\ext\\census\\resource.cc " +
+    "src\\core\\ext\\census\\trace_context.cc " +
+    "src\\core\\ext\\census\\tracing.cc " +
+    "src\\core\\ext\\filters\\max_age\\max_age_filter.cc " +
+    "src\\core\\ext\\filters\\message_size\\message_size_filter.cc " +
+    "src\\core\\ext\\filters\\workarounds\\workaround_cronet_compression_filter.cc " +
+    "src\\core\\ext\\filters\\workarounds\\workaround_utils.cc " +
+    "src\\core\\plugin_registry\\grpc_plugin_registry.cc " +
     "src\\boringssl\\err_data.c " +
     "third_party\\boringssl\\crypto\\aes\\aes.c " +
     "third_party\\boringssl\\crypto\\aes\\key_wrap.c " +
diff --git a/doc/g_stands_for.md b/doc/g_stands_for.md
index 9a161d6..4e2ca33 100644
--- a/doc/g_stands_for.md
+++ b/doc/g_stands_for.md
@@ -11,3 +11,4 @@
 - 1.4 'g' stands for 'gregarious'
 - 1.6 'g' stands for 'garcia'
 - 1.7 'g' stands for 'gambit'
+- 1.8 'g' stands for 'generous'
diff --git a/examples/node/dynamic_codegen/greeter_server.js b/examples/node/dynamic_codegen/greeter_server.js
index f9cb1b1..180f96c 100644
--- a/examples/node/dynamic_codegen/greeter_server.js
+++ b/examples/node/dynamic_codegen/greeter_server.js
@@ -34,7 +34,7 @@
  */
 function main() {
   var server = new grpc.Server();
-  server.addProtoService(hello_proto.Greeter.service, {sayHello: sayHello});
+  server.addService(hello_proto.Greeter.service, {sayHello: sayHello});
   server.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure());
   server.start();
 }
diff --git a/gRPC-Core.podspec b/gRPC-Core.podspec
index 9e72042..ca5301a 100644
--- a/gRPC-Core.podspec
+++ b/gRPC-Core.podspec
@@ -22,7 +22,7 @@
 
 Pod::Spec.new do |s|
   s.name     = 'gRPC-Core'
-  version = '1.7.0-dev'
+  version = '1.8.0-dev'
   s.version  = version
   s.summary  = 'Core cross-platform gRPC library, written in C'
   s.homepage = 'https://grpc.io'
@@ -106,8 +106,6 @@
     ss.source_files = 'include/grpc/support/alloc.h',
                       'include/grpc/support/atm.h',
                       'include/grpc/support/atm_gcc_atomic.h',
-                      'include/grpc/support/atm_gcc_sync.h',
-                      'include/grpc/support/atm_windows.h',
                       'include/grpc/support/avl.h',
                       'include/grpc/support/cmdline.h',
                       'include/grpc/support/cpu.h',
@@ -122,18 +120,13 @@
                       'include/grpc/support/sync_custom.h',
                       'include/grpc/support/sync_generic.h',
                       'include/grpc/support/sync_posix.h',
-                      'include/grpc/support/sync_windows.h',
                       'include/grpc/support/thd.h',
                       'include/grpc/support/time.h',
                       'include/grpc/support/tls.h',
-                      'include/grpc/support/tls_gcc.h',
-                      'include/grpc/support/tls_msvc.h',
                       'include/grpc/support/tls_pthread.h',
                       'include/grpc/support/useful.h',
                       'include/grpc/impl/codegen/atm.h',
                       'include/grpc/impl/codegen/atm_gcc_atomic.h',
-                      'include/grpc/impl/codegen/atm_gcc_sync.h',
-                      'include/grpc/impl/codegen/atm_windows.h',
                       'include/grpc/impl/codegen/gpr_slice.h',
                       'include/grpc/impl/codegen/gpr_types.h',
                       'include/grpc/impl/codegen/port_platform.h',
@@ -141,7 +134,6 @@
                       'include/grpc/impl/codegen/sync_custom.h',
                       'include/grpc/impl/codegen/sync_generic.h',
                       'include/grpc/impl/codegen/sync_posix.h',
-                      'include/grpc/impl/codegen/sync_windows.h',
                       'include/grpc/impl/codegen/byte_buffer.h',
                       'include/grpc/impl/codegen/byte_buffer_reader.h',
                       'include/grpc/impl/codegen/compression_types.h',
@@ -153,8 +145,6 @@
                       'include/grpc/impl/codegen/status.h',
                       'include/grpc/impl/codegen/atm.h',
                       'include/grpc/impl/codegen/atm_gcc_atomic.h',
-                      'include/grpc/impl/codegen/atm_gcc_sync.h',
-                      'include/grpc/impl/codegen/atm_windows.h',
                       'include/grpc/impl/codegen/gpr_slice.h',
                       'include/grpc/impl/codegen/gpr_types.h',
                       'include/grpc/impl/codegen/port_platform.h',
@@ -162,7 +152,6 @@
                       'include/grpc/impl/codegen/sync_custom.h',
                       'include/grpc/impl/codegen/sync_generic.h',
                       'include/grpc/impl/codegen/sync_posix.h',
-                      'include/grpc/impl/codegen/sync_windows.h',
                       'include/grpc/grpc_security.h',
                       'include/grpc/byte_buffer.h',
                       'include/grpc/byte_buffer_reader.h',
@@ -202,52 +191,52 @@
                       'src/core/lib/support/string_windows.h',
                       'src/core/lib/support/time_precise.h',
                       'src/core/lib/support/tmpfile.h',
-                      'src/core/lib/profiling/basic_timers.c',
-                      'src/core/lib/profiling/stap_timers.c',
-                      'src/core/lib/support/alloc.c',
-                      'src/core/lib/support/arena.c',
-                      'src/core/lib/support/atm.c',
-                      'src/core/lib/support/avl.c',
-                      'src/core/lib/support/backoff.c',
-                      'src/core/lib/support/cmdline.c',
-                      'src/core/lib/support/cpu_iphone.c',
-                      'src/core/lib/support/cpu_linux.c',
-                      'src/core/lib/support/cpu_posix.c',
-                      'src/core/lib/support/cpu_windows.c',
-                      'src/core/lib/support/env_linux.c',
-                      'src/core/lib/support/env_posix.c',
-                      'src/core/lib/support/env_windows.c',
-                      'src/core/lib/support/histogram.c',
-                      'src/core/lib/support/host_port.c',
-                      'src/core/lib/support/log.c',
-                      'src/core/lib/support/log_android.c',
-                      'src/core/lib/support/log_linux.c',
-                      'src/core/lib/support/log_posix.c',
-                      'src/core/lib/support/log_windows.c',
-                      'src/core/lib/support/mpscq.c',
-                      'src/core/lib/support/murmur_hash.c',
-                      'src/core/lib/support/stack_lockfree.c',
-                      'src/core/lib/support/string.c',
-                      'src/core/lib/support/string_posix.c',
-                      'src/core/lib/support/string_util_windows.c',
-                      'src/core/lib/support/string_windows.c',
-                      'src/core/lib/support/subprocess_posix.c',
-                      'src/core/lib/support/subprocess_windows.c',
-                      'src/core/lib/support/sync.c',
-                      'src/core/lib/support/sync_posix.c',
-                      'src/core/lib/support/sync_windows.c',
-                      'src/core/lib/support/thd.c',
-                      'src/core/lib/support/thd_posix.c',
-                      'src/core/lib/support/thd_windows.c',
-                      'src/core/lib/support/time.c',
-                      'src/core/lib/support/time_posix.c',
-                      'src/core/lib/support/time_precise.c',
-                      'src/core/lib/support/time_windows.c',
-                      'src/core/lib/support/tls_pthread.c',
-                      'src/core/lib/support/tmpfile_msys.c',
-                      'src/core/lib/support/tmpfile_posix.c',
-                      'src/core/lib/support/tmpfile_windows.c',
-                      'src/core/lib/support/wrap_memcpy.c',
+                      'src/core/lib/profiling/basic_timers.cc',
+                      'src/core/lib/profiling/stap_timers.cc',
+                      'src/core/lib/support/alloc.cc',
+                      'src/core/lib/support/arena.cc',
+                      'src/core/lib/support/atm.cc',
+                      'src/core/lib/support/avl.cc',
+                      'src/core/lib/support/backoff.cc',
+                      'src/core/lib/support/cmdline.cc',
+                      'src/core/lib/support/cpu_iphone.cc',
+                      'src/core/lib/support/cpu_linux.cc',
+                      'src/core/lib/support/cpu_posix.cc',
+                      'src/core/lib/support/cpu_windows.cc',
+                      'src/core/lib/support/env_linux.cc',
+                      'src/core/lib/support/env_posix.cc',
+                      'src/core/lib/support/env_windows.cc',
+                      'src/core/lib/support/histogram.cc',
+                      'src/core/lib/support/host_port.cc',
+                      'src/core/lib/support/log.cc',
+                      'src/core/lib/support/log_android.cc',
+                      'src/core/lib/support/log_linux.cc',
+                      'src/core/lib/support/log_posix.cc',
+                      'src/core/lib/support/log_windows.cc',
+                      'src/core/lib/support/mpscq.cc',
+                      'src/core/lib/support/murmur_hash.cc',
+                      'src/core/lib/support/stack_lockfree.cc',
+                      'src/core/lib/support/string.cc',
+                      'src/core/lib/support/string_posix.cc',
+                      'src/core/lib/support/string_util_windows.cc',
+                      'src/core/lib/support/string_windows.cc',
+                      'src/core/lib/support/subprocess_posix.cc',
+                      'src/core/lib/support/subprocess_windows.cc',
+                      'src/core/lib/support/sync.cc',
+                      'src/core/lib/support/sync_posix.cc',
+                      'src/core/lib/support/sync_windows.cc',
+                      'src/core/lib/support/thd.cc',
+                      'src/core/lib/support/thd_posix.cc',
+                      'src/core/lib/support/thd_windows.cc',
+                      'src/core/lib/support/time.cc',
+                      'src/core/lib/support/time_posix.cc',
+                      'src/core/lib/support/time_precise.cc',
+                      'src/core/lib/support/time_windows.cc',
+                      'src/core/lib/support/tls_pthread.cc',
+                      'src/core/lib/support/tmpfile_msys.cc',
+                      'src/core/lib/support/tmpfile_posix.cc',
+                      'src/core/lib/support/tmpfile_windows.cc',
+                      'src/core/lib/support/wrap_memcpy.cc',
                       'src/core/ext/transport/chttp2/transport/bin_decoder.h',
                       'src/core/ext/transport/chttp2/transport/bin_encoder.h',
                       'src/core/ext/transport/chttp2/transport/chttp2_transport.h',
@@ -471,264 +460,264 @@
                       'src/core/ext/filters/message_size/message_size_filter.h',
                       'src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h',
                       'src/core/ext/filters/workarounds/workaround_utils.h',
-                      'src/core/lib/surface/init.c',
-                      'src/core/lib/channel/channel_args.c',
-                      'src/core/lib/channel/channel_stack.c',
-                      'src/core/lib/channel/channel_stack_builder.c',
-                      'src/core/lib/channel/connected_channel.c',
-                      'src/core/lib/channel/handshaker.c',
-                      'src/core/lib/channel/handshaker_factory.c',
-                      'src/core/lib/channel/handshaker_registry.c',
-                      'src/core/lib/compression/compression.c',
-                      'src/core/lib/compression/message_compress.c',
-                      'src/core/lib/compression/stream_compression.c',
-                      'src/core/lib/compression/stream_compression_gzip.c',
-                      'src/core/lib/compression/stream_compression_identity.c',
-                      'src/core/lib/debug/stats.c',
-                      'src/core/lib/debug/stats_data.c',
-                      'src/core/lib/http/format_request.c',
-                      'src/core/lib/http/httpcli.c',
-                      'src/core/lib/http/parser.c',
-                      'src/core/lib/iomgr/call_combiner.c',
-                      'src/core/lib/iomgr/closure.c',
-                      'src/core/lib/iomgr/combiner.c',
-                      'src/core/lib/iomgr/endpoint.c',
-                      'src/core/lib/iomgr/endpoint_pair_posix.c',
-                      'src/core/lib/iomgr/endpoint_pair_uv.c',
-                      'src/core/lib/iomgr/endpoint_pair_windows.c',
-                      'src/core/lib/iomgr/error.c',
-                      'src/core/lib/iomgr/ev_epoll1_linux.c',
-                      'src/core/lib/iomgr/ev_epollex_linux.c',
-                      'src/core/lib/iomgr/ev_epollsig_linux.c',
-                      'src/core/lib/iomgr/ev_poll_posix.c',
-                      'src/core/lib/iomgr/ev_posix.c',
-                      'src/core/lib/iomgr/ev_windows.c',
-                      'src/core/lib/iomgr/exec_ctx.c',
-                      'src/core/lib/iomgr/executor.c',
-                      'src/core/lib/iomgr/gethostname_fallback.c',
-                      'src/core/lib/iomgr/gethostname_host_name_max.c',
-                      'src/core/lib/iomgr/gethostname_sysconf.c',
-                      'src/core/lib/iomgr/iocp_windows.c',
-                      'src/core/lib/iomgr/iomgr.c',
-                      'src/core/lib/iomgr/iomgr_posix.c',
-                      'src/core/lib/iomgr/iomgr_uv.c',
-                      'src/core/lib/iomgr/iomgr_windows.c',
-                      'src/core/lib/iomgr/is_epollexclusive_available.c',
-                      'src/core/lib/iomgr/load_file.c',
-                      'src/core/lib/iomgr/lockfree_event.c',
-                      'src/core/lib/iomgr/network_status_tracker.c',
-                      'src/core/lib/iomgr/polling_entity.c',
-                      'src/core/lib/iomgr/pollset_set_uv.c',
-                      'src/core/lib/iomgr/pollset_set_windows.c',
-                      'src/core/lib/iomgr/pollset_uv.c',
-                      'src/core/lib/iomgr/pollset_windows.c',
-                      'src/core/lib/iomgr/resolve_address_posix.c',
-                      'src/core/lib/iomgr/resolve_address_uv.c',
-                      'src/core/lib/iomgr/resolve_address_windows.c',
-                      'src/core/lib/iomgr/resource_quota.c',
-                      'src/core/lib/iomgr/sockaddr_utils.c',
-                      'src/core/lib/iomgr/socket_factory_posix.c',
-                      'src/core/lib/iomgr/socket_mutator.c',
-                      'src/core/lib/iomgr/socket_utils_common_posix.c',
-                      'src/core/lib/iomgr/socket_utils_linux.c',
-                      'src/core/lib/iomgr/socket_utils_posix.c',
-                      'src/core/lib/iomgr/socket_utils_uv.c',
-                      'src/core/lib/iomgr/socket_utils_windows.c',
-                      'src/core/lib/iomgr/socket_windows.c',
-                      'src/core/lib/iomgr/tcp_client_posix.c',
-                      'src/core/lib/iomgr/tcp_client_uv.c',
-                      'src/core/lib/iomgr/tcp_client_windows.c',
-                      'src/core/lib/iomgr/tcp_posix.c',
-                      'src/core/lib/iomgr/tcp_server_posix.c',
-                      'src/core/lib/iomgr/tcp_server_utils_posix_common.c',
-                      'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c',
-                      'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c',
-                      'src/core/lib/iomgr/tcp_server_uv.c',
-                      'src/core/lib/iomgr/tcp_server_windows.c',
-                      'src/core/lib/iomgr/tcp_uv.c',
-                      'src/core/lib/iomgr/tcp_windows.c',
-                      'src/core/lib/iomgr/time_averaged_stats.c',
-                      'src/core/lib/iomgr/timer_generic.c',
-                      'src/core/lib/iomgr/timer_heap.c',
-                      'src/core/lib/iomgr/timer_manager.c',
-                      'src/core/lib/iomgr/timer_uv.c',
-                      'src/core/lib/iomgr/udp_server.c',
-                      'src/core/lib/iomgr/unix_sockets_posix.c',
-                      'src/core/lib/iomgr/unix_sockets_posix_noop.c',
-                      'src/core/lib/iomgr/wakeup_fd_cv.c',
-                      'src/core/lib/iomgr/wakeup_fd_eventfd.c',
-                      'src/core/lib/iomgr/wakeup_fd_nospecial.c',
-                      'src/core/lib/iomgr/wakeup_fd_pipe.c',
-                      'src/core/lib/iomgr/wakeup_fd_posix.c',
-                      'src/core/lib/json/json.c',
-                      'src/core/lib/json/json_reader.c',
-                      'src/core/lib/json/json_string.c',
-                      'src/core/lib/json/json_writer.c',
-                      'src/core/lib/slice/b64.c',
-                      'src/core/lib/slice/percent_encoding.c',
-                      'src/core/lib/slice/slice.c',
-                      'src/core/lib/slice/slice_buffer.c',
-                      'src/core/lib/slice/slice_hash_table.c',
-                      'src/core/lib/slice/slice_intern.c',
-                      'src/core/lib/slice/slice_string_helpers.c',
-                      'src/core/lib/surface/alarm.c',
-                      'src/core/lib/surface/api_trace.c',
-                      'src/core/lib/surface/byte_buffer.c',
-                      'src/core/lib/surface/byte_buffer_reader.c',
-                      'src/core/lib/surface/call.c',
-                      'src/core/lib/surface/call_details.c',
-                      'src/core/lib/surface/call_log_batch.c',
-                      'src/core/lib/surface/channel.c',
-                      'src/core/lib/surface/channel_init.c',
-                      'src/core/lib/surface/channel_ping.c',
-                      'src/core/lib/surface/channel_stack_type.c',
-                      'src/core/lib/surface/completion_queue.c',
-                      'src/core/lib/surface/completion_queue_factory.c',
-                      'src/core/lib/surface/event_string.c',
+                      'src/core/lib/surface/init.cc',
+                      'src/core/lib/channel/channel_args.cc',
+                      'src/core/lib/channel/channel_stack.cc',
+                      'src/core/lib/channel/channel_stack_builder.cc',
+                      'src/core/lib/channel/connected_channel.cc',
+                      'src/core/lib/channel/handshaker.cc',
+                      'src/core/lib/channel/handshaker_factory.cc',
+                      'src/core/lib/channel/handshaker_registry.cc',
+                      'src/core/lib/compression/compression.cc',
+                      'src/core/lib/compression/message_compress.cc',
+                      'src/core/lib/compression/stream_compression.cc',
+                      'src/core/lib/compression/stream_compression_gzip.cc',
+                      'src/core/lib/compression/stream_compression_identity.cc',
+                      'src/core/lib/debug/stats.cc',
+                      'src/core/lib/debug/stats_data.cc',
+                      'src/core/lib/http/format_request.cc',
+                      'src/core/lib/http/httpcli.cc',
+                      'src/core/lib/http/parser.cc',
+                      'src/core/lib/iomgr/call_combiner.cc',
+                      'src/core/lib/iomgr/closure.cc',
+                      'src/core/lib/iomgr/combiner.cc',
+                      'src/core/lib/iomgr/endpoint.cc',
+                      'src/core/lib/iomgr/endpoint_pair_posix.cc',
+                      'src/core/lib/iomgr/endpoint_pair_uv.cc',
+                      'src/core/lib/iomgr/endpoint_pair_windows.cc',
+                      'src/core/lib/iomgr/error.cc',
+                      'src/core/lib/iomgr/ev_epoll1_linux.cc',
+                      'src/core/lib/iomgr/ev_epollex_linux.cc',
+                      'src/core/lib/iomgr/ev_epollsig_linux.cc',
+                      'src/core/lib/iomgr/ev_poll_posix.cc',
+                      'src/core/lib/iomgr/ev_posix.cc',
+                      'src/core/lib/iomgr/ev_windows.cc',
+                      'src/core/lib/iomgr/exec_ctx.cc',
+                      'src/core/lib/iomgr/executor.cc',
+                      'src/core/lib/iomgr/gethostname_fallback.cc',
+                      'src/core/lib/iomgr/gethostname_host_name_max.cc',
+                      'src/core/lib/iomgr/gethostname_sysconf.cc',
+                      'src/core/lib/iomgr/iocp_windows.cc',
+                      'src/core/lib/iomgr/iomgr.cc',
+                      'src/core/lib/iomgr/iomgr_posix.cc',
+                      'src/core/lib/iomgr/iomgr_uv.cc',
+                      'src/core/lib/iomgr/iomgr_windows.cc',
+                      'src/core/lib/iomgr/is_epollexclusive_available.cc',
+                      'src/core/lib/iomgr/load_file.cc',
+                      'src/core/lib/iomgr/lockfree_event.cc',
+                      'src/core/lib/iomgr/network_status_tracker.cc',
+                      'src/core/lib/iomgr/polling_entity.cc',
+                      'src/core/lib/iomgr/pollset_set_uv.cc',
+                      'src/core/lib/iomgr/pollset_set_windows.cc',
+                      'src/core/lib/iomgr/pollset_uv.cc',
+                      'src/core/lib/iomgr/pollset_windows.cc',
+                      'src/core/lib/iomgr/resolve_address_posix.cc',
+                      'src/core/lib/iomgr/resolve_address_uv.cc',
+                      'src/core/lib/iomgr/resolve_address_windows.cc',
+                      'src/core/lib/iomgr/resource_quota.cc',
+                      'src/core/lib/iomgr/sockaddr_utils.cc',
+                      'src/core/lib/iomgr/socket_factory_posix.cc',
+                      'src/core/lib/iomgr/socket_mutator.cc',
+                      'src/core/lib/iomgr/socket_utils_common_posix.cc',
+                      'src/core/lib/iomgr/socket_utils_linux.cc',
+                      'src/core/lib/iomgr/socket_utils_posix.cc',
+                      'src/core/lib/iomgr/socket_utils_uv.cc',
+                      'src/core/lib/iomgr/socket_utils_windows.cc',
+                      'src/core/lib/iomgr/socket_windows.cc',
+                      'src/core/lib/iomgr/tcp_client_posix.cc',
+                      'src/core/lib/iomgr/tcp_client_uv.cc',
+                      'src/core/lib/iomgr/tcp_client_windows.cc',
+                      'src/core/lib/iomgr/tcp_posix.cc',
+                      'src/core/lib/iomgr/tcp_server_posix.cc',
+                      'src/core/lib/iomgr/tcp_server_utils_posix_common.cc',
+                      'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc',
+                      'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc',
+                      'src/core/lib/iomgr/tcp_server_uv.cc',
+                      'src/core/lib/iomgr/tcp_server_windows.cc',
+                      'src/core/lib/iomgr/tcp_uv.cc',
+                      'src/core/lib/iomgr/tcp_windows.cc',
+                      'src/core/lib/iomgr/time_averaged_stats.cc',
+                      'src/core/lib/iomgr/timer_generic.cc',
+                      'src/core/lib/iomgr/timer_heap.cc',
+                      'src/core/lib/iomgr/timer_manager.cc',
+                      'src/core/lib/iomgr/timer_uv.cc',
+                      'src/core/lib/iomgr/udp_server.cc',
+                      'src/core/lib/iomgr/unix_sockets_posix.cc',
+                      'src/core/lib/iomgr/unix_sockets_posix_noop.cc',
+                      'src/core/lib/iomgr/wakeup_fd_cv.cc',
+                      'src/core/lib/iomgr/wakeup_fd_eventfd.cc',
+                      'src/core/lib/iomgr/wakeup_fd_nospecial.cc',
+                      'src/core/lib/iomgr/wakeup_fd_pipe.cc',
+                      'src/core/lib/iomgr/wakeup_fd_posix.cc',
+                      'src/core/lib/json/json.cc',
+                      'src/core/lib/json/json_reader.cc',
+                      'src/core/lib/json/json_string.cc',
+                      'src/core/lib/json/json_writer.cc',
+                      'src/core/lib/slice/b64.cc',
+                      'src/core/lib/slice/percent_encoding.cc',
+                      'src/core/lib/slice/slice.cc',
+                      'src/core/lib/slice/slice_buffer.cc',
+                      'src/core/lib/slice/slice_hash_table.cc',
+                      'src/core/lib/slice/slice_intern.cc',
+                      'src/core/lib/slice/slice_string_helpers.cc',
+                      'src/core/lib/surface/alarm.cc',
+                      'src/core/lib/surface/api_trace.cc',
+                      'src/core/lib/surface/byte_buffer.cc',
+                      'src/core/lib/surface/byte_buffer_reader.cc',
+                      'src/core/lib/surface/call.cc',
+                      'src/core/lib/surface/call_details.cc',
+                      'src/core/lib/surface/call_log_batch.cc',
+                      'src/core/lib/surface/channel.cc',
+                      'src/core/lib/surface/channel_init.cc',
+                      'src/core/lib/surface/channel_ping.cc',
+                      'src/core/lib/surface/channel_stack_type.cc',
+                      'src/core/lib/surface/completion_queue.cc',
+                      'src/core/lib/surface/completion_queue_factory.cc',
+                      'src/core/lib/surface/event_string.cc',
                       'src/core/lib/surface/lame_client.cc',
-                      'src/core/lib/surface/metadata_array.c',
-                      'src/core/lib/surface/server.c',
-                      'src/core/lib/surface/validate_metadata.c',
-                      'src/core/lib/surface/version.c',
-                      'src/core/lib/transport/bdp_estimator.c',
-                      'src/core/lib/transport/byte_stream.c',
-                      'src/core/lib/transport/connectivity_state.c',
-                      'src/core/lib/transport/error_utils.c',
-                      'src/core/lib/transport/metadata.c',
-                      'src/core/lib/transport/metadata_batch.c',
-                      'src/core/lib/transport/pid_controller.c',
-                      'src/core/lib/transport/service_config.c',
-                      'src/core/lib/transport/static_metadata.c',
-                      'src/core/lib/transport/status_conversion.c',
-                      'src/core/lib/transport/timeout_encoding.c',
-                      'src/core/lib/transport/transport.c',
-                      'src/core/lib/transport/transport_op_string.c',
-                      'src/core/lib/debug/trace.c',
-                      'src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c',
-                      'src/core/ext/transport/chttp2/transport/bin_decoder.c',
-                      'src/core/ext/transport/chttp2/transport/bin_encoder.c',
-                      'src/core/ext/transport/chttp2/transport/chttp2_plugin.c',
-                      'src/core/ext/transport/chttp2/transport/chttp2_transport.c',
-                      'src/core/ext/transport/chttp2/transport/flow_control.c',
-                      'src/core/ext/transport/chttp2/transport/frame_data.c',
-                      'src/core/ext/transport/chttp2/transport/frame_goaway.c',
-                      'src/core/ext/transport/chttp2/transport/frame_ping.c',
-                      'src/core/ext/transport/chttp2/transport/frame_rst_stream.c',
-                      'src/core/ext/transport/chttp2/transport/frame_settings.c',
-                      'src/core/ext/transport/chttp2/transport/frame_window_update.c',
-                      'src/core/ext/transport/chttp2/transport/hpack_encoder.c',
-                      'src/core/ext/transport/chttp2/transport/hpack_parser.c',
-                      'src/core/ext/transport/chttp2/transport/hpack_table.c',
-                      'src/core/ext/transport/chttp2/transport/http2_settings.c',
-                      'src/core/ext/transport/chttp2/transport/huffsyms.c',
-                      'src/core/ext/transport/chttp2/transport/incoming_metadata.c',
-                      'src/core/ext/transport/chttp2/transport/parsing.c',
-                      'src/core/ext/transport/chttp2/transport/stream_lists.c',
-                      'src/core/ext/transport/chttp2/transport/stream_map.c',
-                      'src/core/ext/transport/chttp2/transport/varint.c',
-                      'src/core/ext/transport/chttp2/transport/writing.c',
-                      'src/core/ext/transport/chttp2/alpn/alpn.c',
-                      'src/core/ext/filters/http/client/http_client_filter.c',
-                      'src/core/ext/filters/http/http_filters_plugin.c',
-                      'src/core/ext/filters/http/message_compress/message_compress_filter.c',
-                      'src/core/ext/filters/http/server/http_server_filter.c',
-                      'src/core/lib/http/httpcli_security_connector.c',
-                      'src/core/lib/security/context/security_context.c',
-                      'src/core/lib/security/credentials/composite/composite_credentials.c',
-                      'src/core/lib/security/credentials/credentials.c',
-                      'src/core/lib/security/credentials/credentials_metadata.c',
-                      'src/core/lib/security/credentials/fake/fake_credentials.c',
-                      'src/core/lib/security/credentials/google_default/credentials_generic.c',
-                      'src/core/lib/security/credentials/google_default/google_default_credentials.c',
-                      'src/core/lib/security/credentials/iam/iam_credentials.c',
-                      'src/core/lib/security/credentials/jwt/json_token.c',
-                      'src/core/lib/security/credentials/jwt/jwt_credentials.c',
-                      'src/core/lib/security/credentials/jwt/jwt_verifier.c',
-                      'src/core/lib/security/credentials/oauth2/oauth2_credentials.c',
-                      'src/core/lib/security/credentials/plugin/plugin_credentials.c',
-                      'src/core/lib/security/credentials/ssl/ssl_credentials.c',
-                      'src/core/lib/security/transport/client_auth_filter.c',
-                      'src/core/lib/security/transport/lb_targets_info.c',
-                      'src/core/lib/security/transport/secure_endpoint.c',
-                      'src/core/lib/security/transport/security_connector.c',
-                      'src/core/lib/security/transport/security_handshaker.c',
-                      'src/core/lib/security/transport/server_auth_filter.c',
-                      'src/core/lib/security/transport/tsi_error.c',
-                      'src/core/lib/security/util/json_util.c',
-                      'src/core/lib/surface/init_secure.c',
-                      'src/core/tsi/fake_transport_security.c',
-                      'src/core/tsi/gts_transport_security.c',
-                      'src/core/tsi/ssl_transport_security.c',
-                      'src/core/tsi/transport_security_grpc.c',
-                      'src/core/tsi/transport_security.c',
-                      'src/core/tsi/transport_security_adapter.c',
-                      'src/core/ext/transport/chttp2/server/chttp2_server.c',
-                      'src/core/ext/transport/chttp2/client/secure/secure_channel_create.c',
-                      'src/core/ext/filters/client_channel/channel_connectivity.c',
-                      'src/core/ext/filters/client_channel/client_channel.c',
-                      'src/core/ext/filters/client_channel/client_channel_factory.c',
-                      'src/core/ext/filters/client_channel/client_channel_plugin.c',
-                      'src/core/ext/filters/client_channel/connector.c',
-                      'src/core/ext/filters/client_channel/http_connect_handshaker.c',
-                      'src/core/ext/filters/client_channel/http_proxy.c',
-                      'src/core/ext/filters/client_channel/lb_policy.c',
-                      'src/core/ext/filters/client_channel/lb_policy_factory.c',
-                      'src/core/ext/filters/client_channel/lb_policy_registry.c',
-                      'src/core/ext/filters/client_channel/parse_address.c',
-                      'src/core/ext/filters/client_channel/proxy_mapper.c',
-                      'src/core/ext/filters/client_channel/proxy_mapper_registry.c',
-                      'src/core/ext/filters/client_channel/resolver.c',
-                      'src/core/ext/filters/client_channel/resolver_factory.c',
-                      'src/core/ext/filters/client_channel/resolver_registry.c',
-                      'src/core/ext/filters/client_channel/retry_throttle.c',
-                      'src/core/ext/filters/client_channel/subchannel.c',
-                      'src/core/ext/filters/client_channel/subchannel_index.c',
-                      'src/core/ext/filters/client_channel/uri_parser.c',
-                      'src/core/ext/filters/deadline/deadline_filter.c',
-                      'src/core/ext/transport/chttp2/client/chttp2_connector.c',
-                      'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
-                      'src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c',
-                      'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
-                      'src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c',
-                      'src/core/ext/transport/inproc/inproc_plugin.c',
-                      'src/core/ext/transport/inproc/inproc_transport.c',
-                      'src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c',
-                      'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c',
-                      'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c',
-                      'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c',
-                      'src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c',
+                      'src/core/lib/surface/metadata_array.cc',
+                      'src/core/lib/surface/server.cc',
+                      'src/core/lib/surface/validate_metadata.cc',
+                      'src/core/lib/surface/version.cc',
+                      'src/core/lib/transport/bdp_estimator.cc',
+                      'src/core/lib/transport/byte_stream.cc',
+                      'src/core/lib/transport/connectivity_state.cc',
+                      'src/core/lib/transport/error_utils.cc',
+                      'src/core/lib/transport/metadata.cc',
+                      'src/core/lib/transport/metadata_batch.cc',
+                      'src/core/lib/transport/pid_controller.cc',
+                      'src/core/lib/transport/service_config.cc',
+                      'src/core/lib/transport/static_metadata.cc',
+                      'src/core/lib/transport/status_conversion.cc',
+                      'src/core/lib/transport/timeout_encoding.cc',
+                      'src/core/lib/transport/transport.cc',
+                      'src/core/lib/transport/transport_op_string.cc',
+                      'src/core/lib/debug/trace.cc',
+                      'src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc',
+                      'src/core/ext/transport/chttp2/transport/bin_decoder.cc',
+                      'src/core/ext/transport/chttp2/transport/bin_encoder.cc',
+                      'src/core/ext/transport/chttp2/transport/chttp2_plugin.cc',
+                      'src/core/ext/transport/chttp2/transport/chttp2_transport.cc',
+                      'src/core/ext/transport/chttp2/transport/flow_control.cc',
+                      'src/core/ext/transport/chttp2/transport/frame_data.cc',
+                      'src/core/ext/transport/chttp2/transport/frame_goaway.cc',
+                      'src/core/ext/transport/chttp2/transport/frame_ping.cc',
+                      'src/core/ext/transport/chttp2/transport/frame_rst_stream.cc',
+                      'src/core/ext/transport/chttp2/transport/frame_settings.cc',
+                      'src/core/ext/transport/chttp2/transport/frame_window_update.cc',
+                      'src/core/ext/transport/chttp2/transport/hpack_encoder.cc',
+                      'src/core/ext/transport/chttp2/transport/hpack_parser.cc',
+                      'src/core/ext/transport/chttp2/transport/hpack_table.cc',
+                      'src/core/ext/transport/chttp2/transport/http2_settings.cc',
+                      'src/core/ext/transport/chttp2/transport/huffsyms.cc',
+                      'src/core/ext/transport/chttp2/transport/incoming_metadata.cc',
+                      'src/core/ext/transport/chttp2/transport/parsing.cc',
+                      'src/core/ext/transport/chttp2/transport/stream_lists.cc',
+                      'src/core/ext/transport/chttp2/transport/stream_map.cc',
+                      'src/core/ext/transport/chttp2/transport/varint.cc',
+                      'src/core/ext/transport/chttp2/transport/writing.cc',
+                      'src/core/ext/transport/chttp2/alpn/alpn.cc',
+                      'src/core/ext/filters/http/client/http_client_filter.cc',
+                      'src/core/ext/filters/http/http_filters_plugin.cc',
+                      'src/core/ext/filters/http/message_compress/message_compress_filter.cc',
+                      'src/core/ext/filters/http/server/http_server_filter.cc',
+                      'src/core/lib/http/httpcli_security_connector.cc',
+                      'src/core/lib/security/context/security_context.cc',
+                      'src/core/lib/security/credentials/composite/composite_credentials.cc',
+                      'src/core/lib/security/credentials/credentials.cc',
+                      'src/core/lib/security/credentials/credentials_metadata.cc',
+                      'src/core/lib/security/credentials/fake/fake_credentials.cc',
+                      'src/core/lib/security/credentials/google_default/credentials_generic.cc',
+                      'src/core/lib/security/credentials/google_default/google_default_credentials.cc',
+                      'src/core/lib/security/credentials/iam/iam_credentials.cc',
+                      'src/core/lib/security/credentials/jwt/json_token.cc',
+                      'src/core/lib/security/credentials/jwt/jwt_credentials.cc',
+                      'src/core/lib/security/credentials/jwt/jwt_verifier.cc',
+                      'src/core/lib/security/credentials/oauth2/oauth2_credentials.cc',
+                      'src/core/lib/security/credentials/plugin/plugin_credentials.cc',
+                      'src/core/lib/security/credentials/ssl/ssl_credentials.cc',
+                      'src/core/lib/security/transport/client_auth_filter.cc',
+                      'src/core/lib/security/transport/lb_targets_info.cc',
+                      'src/core/lib/security/transport/secure_endpoint.cc',
+                      'src/core/lib/security/transport/security_connector.cc',
+                      'src/core/lib/security/transport/security_handshaker.cc',
+                      'src/core/lib/security/transport/server_auth_filter.cc',
+                      'src/core/lib/security/transport/tsi_error.cc',
+                      'src/core/lib/security/util/json_util.cc',
+                      'src/core/lib/surface/init_secure.cc',
+                      'src/core/tsi/fake_transport_security.cc',
+                      'src/core/tsi/gts_transport_security.cc',
+                      'src/core/tsi/ssl_transport_security.cc',
+                      'src/core/tsi/transport_security_grpc.cc',
+                      'src/core/tsi/transport_security.cc',
+                      'src/core/tsi/transport_security_adapter.cc',
+                      'src/core/ext/transport/chttp2/server/chttp2_server.cc',
+                      'src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc',
+                      'src/core/ext/filters/client_channel/channel_connectivity.cc',
+                      'src/core/ext/filters/client_channel/client_channel.cc',
+                      'src/core/ext/filters/client_channel/client_channel_factory.cc',
+                      'src/core/ext/filters/client_channel/client_channel_plugin.cc',
+                      'src/core/ext/filters/client_channel/connector.cc',
+                      'src/core/ext/filters/client_channel/http_connect_handshaker.cc',
+                      'src/core/ext/filters/client_channel/http_proxy.cc',
+                      'src/core/ext/filters/client_channel/lb_policy.cc',
+                      'src/core/ext/filters/client_channel/lb_policy_factory.cc',
+                      'src/core/ext/filters/client_channel/lb_policy_registry.cc',
+                      'src/core/ext/filters/client_channel/parse_address.cc',
+                      'src/core/ext/filters/client_channel/proxy_mapper.cc',
+                      'src/core/ext/filters/client_channel/proxy_mapper_registry.cc',
+                      'src/core/ext/filters/client_channel/resolver.cc',
+                      'src/core/ext/filters/client_channel/resolver_factory.cc',
+                      'src/core/ext/filters/client_channel/resolver_registry.cc',
+                      'src/core/ext/filters/client_channel/retry_throttle.cc',
+                      'src/core/ext/filters/client_channel/subchannel.cc',
+                      'src/core/ext/filters/client_channel/subchannel_index.cc',
+                      'src/core/ext/filters/client_channel/uri_parser.cc',
+                      'src/core/ext/filters/deadline/deadline_filter.cc',
+                      'src/core/ext/transport/chttp2/client/chttp2_connector.cc',
+                      'src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc',
+                      'src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc',
+                      'src/core/ext/transport/chttp2/client/insecure/channel_create.cc',
+                      'src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc',
+                      'src/core/ext/transport/inproc/inproc_plugin.cc',
+                      'src/core/ext/transport/inproc/inproc_transport.cc',
+                      'src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc',
+                      'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc',
+                      'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc',
+                      'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc',
+                      'src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc',
                       'src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c',
-                      'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c',
-                      'src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c',
-                      'src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c',
-                      'src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c',
-                      'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c',
-                      'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c',
-                      'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c',
-                      'src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c',
-                      'src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c',
-                      'src/core/ext/filters/load_reporting/server_load_reporting_filter.c',
-                      'src/core/ext/filters/load_reporting/server_load_reporting_plugin.c',
-                      'src/core/ext/census/base_resources.c',
-                      'src/core/ext/census/context.c',
+                      'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc',
+                      'src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc',
+                      'src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc',
+                      'src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc',
+                      'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc',
+                      'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc',
+                      'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc',
+                      'src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc',
+                      'src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc',
+                      'src/core/ext/filters/load_reporting/server_load_reporting_filter.cc',
+                      'src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc',
+                      'src/core/ext/census/base_resources.cc',
+                      'src/core/ext/census/context.cc',
                       'src/core/ext/census/gen/census.pb.c',
                       'src/core/ext/census/gen/trace_context.pb.c',
-                      'src/core/ext/census/grpc_context.c',
-                      'src/core/ext/census/grpc_filter.c',
-                      'src/core/ext/census/grpc_plugin.c',
-                      'src/core/ext/census/initialize.c',
-                      'src/core/ext/census/intrusive_hash_map.c',
-                      'src/core/ext/census/mlog.c',
-                      'src/core/ext/census/operation.c',
-                      'src/core/ext/census/placeholders.c',
-                      'src/core/ext/census/resource.c',
-                      'src/core/ext/census/trace_context.c',
-                      'src/core/ext/census/tracing.c',
-                      'src/core/ext/filters/max_age/max_age_filter.c',
-                      'src/core/ext/filters/message_size/message_size_filter.c',
-                      'src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c',
-                      'src/core/ext/filters/workarounds/workaround_utils.c',
-                      'src/core/plugin_registry/grpc_plugin_registry.c'
+                      'src/core/ext/census/grpc_context.cc',
+                      'src/core/ext/census/grpc_filter.cc',
+                      'src/core/ext/census/grpc_plugin.cc',
+                      'src/core/ext/census/initialize.cc',
+                      'src/core/ext/census/intrusive_hash_map.cc',
+                      'src/core/ext/census/mlog.cc',
+                      'src/core/ext/census/operation.cc',
+                      'src/core/ext/census/placeholders.cc',
+                      'src/core/ext/census/resource.cc',
+                      'src/core/ext/census/trace_context.cc',
+                      'src/core/ext/census/tracing.cc',
+                      'src/core/ext/filters/max_age/max_age_filter.cc',
+                      'src/core/ext/filters/message_size/message_size_filter.cc',
+                      'src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc',
+                      'src/core/ext/filters/workarounds/workaround_utils.cc',
+                      'src/core/plugin_registry/grpc_plugin_registry.cc'
 
     ss.private_header_files = 'src/core/lib/profiling/timers.h',
                               'src/core/lib/support/arena.h',
@@ -984,8 +973,8 @@
     ss.dependency "#{s.name}/Implementation", version
     ss.dependency "#{s.name}/Cronet-Interface", version
 
-    ss.source_files = 'src/core/ext/transport/cronet/client/secure/cronet_channel_create.c',
-                      'src/core/ext/transport/cronet/transport/cronet_transport.{c,h}',
+    ss.source_files = 'src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc',
+                      'src/core/ext/transport/cronet/transport/cronet_transport.{cc,h}',
                       'third_party/objective_c/Cronet/bidirectional_stream_c.h'
   end
 
diff --git a/gRPC-ProtoRPC.podspec b/gRPC-ProtoRPC.podspec
index cb40330..db1e8db 100644
--- a/gRPC-ProtoRPC.podspec
+++ b/gRPC-ProtoRPC.podspec
@@ -21,7 +21,7 @@
 
 Pod::Spec.new do |s|
   s.name     = 'gRPC-ProtoRPC'
-  version = '1.7.0-dev'
+  version = '1.8.0-dev'
   s.version  = version
   s.summary  = 'RPC library for Protocol Buffers, based on gRPC'
   s.homepage = 'https://grpc.io'
diff --git a/gRPC-RxLibrary.podspec b/gRPC-RxLibrary.podspec
index 52bd8ed..3689779 100644
--- a/gRPC-RxLibrary.podspec
+++ b/gRPC-RxLibrary.podspec
@@ -21,7 +21,7 @@
 
 Pod::Spec.new do |s|
   s.name     = 'gRPC-RxLibrary'
-  version = '1.7.0-dev'
+  version = '1.8.0-dev'
   s.version  = version
   s.summary  = 'Reactive Extensions library for iOS/OSX.'
   s.homepage = 'https://grpc.io'
diff --git a/gRPC.podspec b/gRPC.podspec
index 79315e4..6bec50f 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -20,7 +20,7 @@
 
 Pod::Spec.new do |s|
   s.name     = 'gRPC'
-  version = '1.7.0-dev'
+  version = '1.8.0-dev'
   s.version  = version
   s.summary  = 'gRPC client library for iOS/OSX'
   s.homepage = 'https://grpc.io'
diff --git a/grpc.gemspec b/grpc.gemspec
index acf71ca..c37859f 100644
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -100,52 +100,52 @@
   s.files += %w( src/core/lib/support/string_windows.h )
   s.files += %w( src/core/lib/support/time_precise.h )
   s.files += %w( src/core/lib/support/tmpfile.h )
-  s.files += %w( src/core/lib/profiling/basic_timers.c )
-  s.files += %w( src/core/lib/profiling/stap_timers.c )
-  s.files += %w( src/core/lib/support/alloc.c )
-  s.files += %w( src/core/lib/support/arena.c )
-  s.files += %w( src/core/lib/support/atm.c )
-  s.files += %w( src/core/lib/support/avl.c )
-  s.files += %w( src/core/lib/support/backoff.c )
-  s.files += %w( src/core/lib/support/cmdline.c )
-  s.files += %w( src/core/lib/support/cpu_iphone.c )
-  s.files += %w( src/core/lib/support/cpu_linux.c )
-  s.files += %w( src/core/lib/support/cpu_posix.c )
-  s.files += %w( src/core/lib/support/cpu_windows.c )
-  s.files += %w( src/core/lib/support/env_linux.c )
-  s.files += %w( src/core/lib/support/env_posix.c )
-  s.files += %w( src/core/lib/support/env_windows.c )
-  s.files += %w( src/core/lib/support/histogram.c )
-  s.files += %w( src/core/lib/support/host_port.c )
-  s.files += %w( src/core/lib/support/log.c )
-  s.files += %w( src/core/lib/support/log_android.c )
-  s.files += %w( src/core/lib/support/log_linux.c )
-  s.files += %w( src/core/lib/support/log_posix.c )
-  s.files += %w( src/core/lib/support/log_windows.c )
-  s.files += %w( src/core/lib/support/mpscq.c )
-  s.files += %w( src/core/lib/support/murmur_hash.c )
-  s.files += %w( src/core/lib/support/stack_lockfree.c )
-  s.files += %w( src/core/lib/support/string.c )
-  s.files += %w( src/core/lib/support/string_posix.c )
-  s.files += %w( src/core/lib/support/string_util_windows.c )
-  s.files += %w( src/core/lib/support/string_windows.c )
-  s.files += %w( src/core/lib/support/subprocess_posix.c )
-  s.files += %w( src/core/lib/support/subprocess_windows.c )
-  s.files += %w( src/core/lib/support/sync.c )
-  s.files += %w( src/core/lib/support/sync_posix.c )
-  s.files += %w( src/core/lib/support/sync_windows.c )
-  s.files += %w( src/core/lib/support/thd.c )
-  s.files += %w( src/core/lib/support/thd_posix.c )
-  s.files += %w( src/core/lib/support/thd_windows.c )
-  s.files += %w( src/core/lib/support/time.c )
-  s.files += %w( src/core/lib/support/time_posix.c )
-  s.files += %w( src/core/lib/support/time_precise.c )
-  s.files += %w( src/core/lib/support/time_windows.c )
-  s.files += %w( src/core/lib/support/tls_pthread.c )
-  s.files += %w( src/core/lib/support/tmpfile_msys.c )
-  s.files += %w( src/core/lib/support/tmpfile_posix.c )
-  s.files += %w( src/core/lib/support/tmpfile_windows.c )
-  s.files += %w( src/core/lib/support/wrap_memcpy.c )
+  s.files += %w( src/core/lib/profiling/basic_timers.cc )
+  s.files += %w( src/core/lib/profiling/stap_timers.cc )
+  s.files += %w( src/core/lib/support/alloc.cc )
+  s.files += %w( src/core/lib/support/arena.cc )
+  s.files += %w( src/core/lib/support/atm.cc )
+  s.files += %w( src/core/lib/support/avl.cc )
+  s.files += %w( src/core/lib/support/backoff.cc )
+  s.files += %w( src/core/lib/support/cmdline.cc )
+  s.files += %w( src/core/lib/support/cpu_iphone.cc )
+  s.files += %w( src/core/lib/support/cpu_linux.cc )
+  s.files += %w( src/core/lib/support/cpu_posix.cc )
+  s.files += %w( src/core/lib/support/cpu_windows.cc )
+  s.files += %w( src/core/lib/support/env_linux.cc )
+  s.files += %w( src/core/lib/support/env_posix.cc )
+  s.files += %w( src/core/lib/support/env_windows.cc )
+  s.files += %w( src/core/lib/support/histogram.cc )
+  s.files += %w( src/core/lib/support/host_port.cc )
+  s.files += %w( src/core/lib/support/log.cc )
+  s.files += %w( src/core/lib/support/log_android.cc )
+  s.files += %w( src/core/lib/support/log_linux.cc )
+  s.files += %w( src/core/lib/support/log_posix.cc )
+  s.files += %w( src/core/lib/support/log_windows.cc )
+  s.files += %w( src/core/lib/support/mpscq.cc )
+  s.files += %w( src/core/lib/support/murmur_hash.cc )
+  s.files += %w( src/core/lib/support/stack_lockfree.cc )
+  s.files += %w( src/core/lib/support/string.cc )
+  s.files += %w( src/core/lib/support/string_posix.cc )
+  s.files += %w( src/core/lib/support/string_util_windows.cc )
+  s.files += %w( src/core/lib/support/string_windows.cc )
+  s.files += %w( src/core/lib/support/subprocess_posix.cc )
+  s.files += %w( src/core/lib/support/subprocess_windows.cc )
+  s.files += %w( src/core/lib/support/sync.cc )
+  s.files += %w( src/core/lib/support/sync_posix.cc )
+  s.files += %w( src/core/lib/support/sync_windows.cc )
+  s.files += %w( src/core/lib/support/thd.cc )
+  s.files += %w( src/core/lib/support/thd_posix.cc )
+  s.files += %w( src/core/lib/support/thd_windows.cc )
+  s.files += %w( src/core/lib/support/time.cc )
+  s.files += %w( src/core/lib/support/time_posix.cc )
+  s.files += %w( src/core/lib/support/time_precise.cc )
+  s.files += %w( src/core/lib/support/time_windows.cc )
+  s.files += %w( src/core/lib/support/tls_pthread.cc )
+  s.files += %w( src/core/lib/support/tmpfile_msys.cc )
+  s.files += %w( src/core/lib/support/tmpfile_posix.cc )
+  s.files += %w( src/core/lib/support/tmpfile_windows.cc )
+  s.files += %w( src/core/lib/support/wrap_memcpy.cc )
   s.files += %w( include/grpc/impl/codegen/byte_buffer.h )
   s.files += %w( include/grpc/impl/codegen/byte_buffer_reader.h )
   s.files += %w( include/grpc/impl/codegen/compression_types.h )
@@ -407,267 +407,267 @@
   s.files += %w( src/core/ext/filters/message_size/message_size_filter.h )
   s.files += %w( src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h )
   s.files += %w( src/core/ext/filters/workarounds/workaround_utils.h )
-  s.files += %w( src/core/lib/surface/init.c )
-  s.files += %w( src/core/lib/channel/channel_args.c )
-  s.files += %w( src/core/lib/channel/channel_stack.c )
-  s.files += %w( src/core/lib/channel/channel_stack_builder.c )
-  s.files += %w( src/core/lib/channel/connected_channel.c )
-  s.files += %w( src/core/lib/channel/handshaker.c )
-  s.files += %w( src/core/lib/channel/handshaker_factory.c )
-  s.files += %w( src/core/lib/channel/handshaker_registry.c )
-  s.files += %w( src/core/lib/compression/compression.c )
-  s.files += %w( src/core/lib/compression/message_compress.c )
-  s.files += %w( src/core/lib/compression/stream_compression.c )
-  s.files += %w( src/core/lib/compression/stream_compression_gzip.c )
-  s.files += %w( src/core/lib/compression/stream_compression_identity.c )
-  s.files += %w( src/core/lib/debug/stats.c )
-  s.files += %w( src/core/lib/debug/stats_data.c )
-  s.files += %w( src/core/lib/http/format_request.c )
-  s.files += %w( src/core/lib/http/httpcli.c )
-  s.files += %w( src/core/lib/http/parser.c )
-  s.files += %w( src/core/lib/iomgr/call_combiner.c )
-  s.files += %w( src/core/lib/iomgr/closure.c )
-  s.files += %w( src/core/lib/iomgr/combiner.c )
-  s.files += %w( src/core/lib/iomgr/endpoint.c )
-  s.files += %w( src/core/lib/iomgr/endpoint_pair_posix.c )
-  s.files += %w( src/core/lib/iomgr/endpoint_pair_uv.c )
-  s.files += %w( src/core/lib/iomgr/endpoint_pair_windows.c )
-  s.files += %w( src/core/lib/iomgr/error.c )
-  s.files += %w( src/core/lib/iomgr/ev_epoll1_linux.c )
-  s.files += %w( src/core/lib/iomgr/ev_epollex_linux.c )
-  s.files += %w( src/core/lib/iomgr/ev_epollsig_linux.c )
-  s.files += %w( src/core/lib/iomgr/ev_poll_posix.c )
-  s.files += %w( src/core/lib/iomgr/ev_posix.c )
-  s.files += %w( src/core/lib/iomgr/ev_windows.c )
-  s.files += %w( src/core/lib/iomgr/exec_ctx.c )
-  s.files += %w( src/core/lib/iomgr/executor.c )
-  s.files += %w( src/core/lib/iomgr/gethostname_fallback.c )
-  s.files += %w( src/core/lib/iomgr/gethostname_host_name_max.c )
-  s.files += %w( src/core/lib/iomgr/gethostname_sysconf.c )
-  s.files += %w( src/core/lib/iomgr/iocp_windows.c )
-  s.files += %w( src/core/lib/iomgr/iomgr.c )
-  s.files += %w( src/core/lib/iomgr/iomgr_posix.c )
-  s.files += %w( src/core/lib/iomgr/iomgr_uv.c )
-  s.files += %w( src/core/lib/iomgr/iomgr_windows.c )
-  s.files += %w( src/core/lib/iomgr/is_epollexclusive_available.c )
-  s.files += %w( src/core/lib/iomgr/load_file.c )
-  s.files += %w( src/core/lib/iomgr/lockfree_event.c )
-  s.files += %w( src/core/lib/iomgr/network_status_tracker.c )
-  s.files += %w( src/core/lib/iomgr/polling_entity.c )
-  s.files += %w( src/core/lib/iomgr/pollset_set_uv.c )
-  s.files += %w( src/core/lib/iomgr/pollset_set_windows.c )
-  s.files += %w( src/core/lib/iomgr/pollset_uv.c )
-  s.files += %w( src/core/lib/iomgr/pollset_windows.c )
-  s.files += %w( src/core/lib/iomgr/resolve_address_posix.c )
-  s.files += %w( src/core/lib/iomgr/resolve_address_uv.c )
-  s.files += %w( src/core/lib/iomgr/resolve_address_windows.c )
-  s.files += %w( src/core/lib/iomgr/resource_quota.c )
-  s.files += %w( src/core/lib/iomgr/sockaddr_utils.c )
-  s.files += %w( src/core/lib/iomgr/socket_factory_posix.c )
-  s.files += %w( src/core/lib/iomgr/socket_mutator.c )
-  s.files += %w( src/core/lib/iomgr/socket_utils_common_posix.c )
-  s.files += %w( src/core/lib/iomgr/socket_utils_linux.c )
-  s.files += %w( src/core/lib/iomgr/socket_utils_posix.c )
-  s.files += %w( src/core/lib/iomgr/socket_utils_uv.c )
-  s.files += %w( src/core/lib/iomgr/socket_utils_windows.c )
-  s.files += %w( src/core/lib/iomgr/socket_windows.c )
-  s.files += %w( src/core/lib/iomgr/tcp_client_posix.c )
-  s.files += %w( src/core/lib/iomgr/tcp_client_uv.c )
-  s.files += %w( src/core/lib/iomgr/tcp_client_windows.c )
-  s.files += %w( src/core/lib/iomgr/tcp_posix.c )
-  s.files += %w( src/core/lib/iomgr/tcp_server_posix.c )
-  s.files += %w( src/core/lib/iomgr/tcp_server_utils_posix_common.c )
-  s.files += %w( src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c )
-  s.files += %w( src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c )
-  s.files += %w( src/core/lib/iomgr/tcp_server_uv.c )
-  s.files += %w( src/core/lib/iomgr/tcp_server_windows.c )
-  s.files += %w( src/core/lib/iomgr/tcp_uv.c )
-  s.files += %w( src/core/lib/iomgr/tcp_windows.c )
-  s.files += %w( src/core/lib/iomgr/time_averaged_stats.c )
-  s.files += %w( src/core/lib/iomgr/timer_generic.c )
-  s.files += %w( src/core/lib/iomgr/timer_heap.c )
-  s.files += %w( src/core/lib/iomgr/timer_manager.c )
-  s.files += %w( src/core/lib/iomgr/timer_uv.c )
-  s.files += %w( src/core/lib/iomgr/udp_server.c )
-  s.files += %w( src/core/lib/iomgr/unix_sockets_posix.c )
-  s.files += %w( src/core/lib/iomgr/unix_sockets_posix_noop.c )
-  s.files += %w( src/core/lib/iomgr/wakeup_fd_cv.c )
-  s.files += %w( src/core/lib/iomgr/wakeup_fd_eventfd.c )
-  s.files += %w( src/core/lib/iomgr/wakeup_fd_nospecial.c )
-  s.files += %w( src/core/lib/iomgr/wakeup_fd_pipe.c )
-  s.files += %w( src/core/lib/iomgr/wakeup_fd_posix.c )
-  s.files += %w( src/core/lib/json/json.c )
-  s.files += %w( src/core/lib/json/json_reader.c )
-  s.files += %w( src/core/lib/json/json_string.c )
-  s.files += %w( src/core/lib/json/json_writer.c )
-  s.files += %w( src/core/lib/slice/b64.c )
-  s.files += %w( src/core/lib/slice/percent_encoding.c )
-  s.files += %w( src/core/lib/slice/slice.c )
-  s.files += %w( src/core/lib/slice/slice_buffer.c )
-  s.files += %w( src/core/lib/slice/slice_hash_table.c )
-  s.files += %w( src/core/lib/slice/slice_intern.c )
-  s.files += %w( src/core/lib/slice/slice_string_helpers.c )
-  s.files += %w( src/core/lib/surface/alarm.c )
-  s.files += %w( src/core/lib/surface/api_trace.c )
-  s.files += %w( src/core/lib/surface/byte_buffer.c )
-  s.files += %w( src/core/lib/surface/byte_buffer_reader.c )
-  s.files += %w( src/core/lib/surface/call.c )
-  s.files += %w( src/core/lib/surface/call_details.c )
-  s.files += %w( src/core/lib/surface/call_log_batch.c )
-  s.files += %w( src/core/lib/surface/channel.c )
-  s.files += %w( src/core/lib/surface/channel_init.c )
-  s.files += %w( src/core/lib/surface/channel_ping.c )
-  s.files += %w( src/core/lib/surface/channel_stack_type.c )
-  s.files += %w( src/core/lib/surface/completion_queue.c )
-  s.files += %w( src/core/lib/surface/completion_queue_factory.c )
-  s.files += %w( src/core/lib/surface/event_string.c )
+  s.files += %w( src/core/lib/surface/init.cc )
+  s.files += %w( src/core/lib/channel/channel_args.cc )
+  s.files += %w( src/core/lib/channel/channel_stack.cc )
+  s.files += %w( src/core/lib/channel/channel_stack_builder.cc )
+  s.files += %w( src/core/lib/channel/connected_channel.cc )
+  s.files += %w( src/core/lib/channel/handshaker.cc )
+  s.files += %w( src/core/lib/channel/handshaker_factory.cc )
+  s.files += %w( src/core/lib/channel/handshaker_registry.cc )
+  s.files += %w( src/core/lib/compression/compression.cc )
+  s.files += %w( src/core/lib/compression/message_compress.cc )
+  s.files += %w( src/core/lib/compression/stream_compression.cc )
+  s.files += %w( src/core/lib/compression/stream_compression_gzip.cc )
+  s.files += %w( src/core/lib/compression/stream_compression_identity.cc )
+  s.files += %w( src/core/lib/debug/stats.cc )
+  s.files += %w( src/core/lib/debug/stats_data.cc )
+  s.files += %w( src/core/lib/http/format_request.cc )
+  s.files += %w( src/core/lib/http/httpcli.cc )
+  s.files += %w( src/core/lib/http/parser.cc )
+  s.files += %w( src/core/lib/iomgr/call_combiner.cc )
+  s.files += %w( src/core/lib/iomgr/closure.cc )
+  s.files += %w( src/core/lib/iomgr/combiner.cc )
+  s.files += %w( src/core/lib/iomgr/endpoint.cc )
+  s.files += %w( src/core/lib/iomgr/endpoint_pair_posix.cc )
+  s.files += %w( src/core/lib/iomgr/endpoint_pair_uv.cc )
+  s.files += %w( src/core/lib/iomgr/endpoint_pair_windows.cc )
+  s.files += %w( src/core/lib/iomgr/error.cc )
+  s.files += %w( src/core/lib/iomgr/ev_epoll1_linux.cc )
+  s.files += %w( src/core/lib/iomgr/ev_epollex_linux.cc )
+  s.files += %w( src/core/lib/iomgr/ev_epollsig_linux.cc )
+  s.files += %w( src/core/lib/iomgr/ev_poll_posix.cc )
+  s.files += %w( src/core/lib/iomgr/ev_posix.cc )
+  s.files += %w( src/core/lib/iomgr/ev_windows.cc )
+  s.files += %w( src/core/lib/iomgr/exec_ctx.cc )
+  s.files += %w( src/core/lib/iomgr/executor.cc )
+  s.files += %w( src/core/lib/iomgr/gethostname_fallback.cc )
+  s.files += %w( src/core/lib/iomgr/gethostname_host_name_max.cc )
+  s.files += %w( src/core/lib/iomgr/gethostname_sysconf.cc )
+  s.files += %w( src/core/lib/iomgr/iocp_windows.cc )
+  s.files += %w( src/core/lib/iomgr/iomgr.cc )
+  s.files += %w( src/core/lib/iomgr/iomgr_posix.cc )
+  s.files += %w( src/core/lib/iomgr/iomgr_uv.cc )
+  s.files += %w( src/core/lib/iomgr/iomgr_windows.cc )
+  s.files += %w( src/core/lib/iomgr/is_epollexclusive_available.cc )
+  s.files += %w( src/core/lib/iomgr/load_file.cc )
+  s.files += %w( src/core/lib/iomgr/lockfree_event.cc )
+  s.files += %w( src/core/lib/iomgr/network_status_tracker.cc )
+  s.files += %w( src/core/lib/iomgr/polling_entity.cc )
+  s.files += %w( src/core/lib/iomgr/pollset_set_uv.cc )
+  s.files += %w( src/core/lib/iomgr/pollset_set_windows.cc )
+  s.files += %w( src/core/lib/iomgr/pollset_uv.cc )
+  s.files += %w( src/core/lib/iomgr/pollset_windows.cc )
+  s.files += %w( src/core/lib/iomgr/resolve_address_posix.cc )
+  s.files += %w( src/core/lib/iomgr/resolve_address_uv.cc )
+  s.files += %w( src/core/lib/iomgr/resolve_address_windows.cc )
+  s.files += %w( src/core/lib/iomgr/resource_quota.cc )
+  s.files += %w( src/core/lib/iomgr/sockaddr_utils.cc )
+  s.files += %w( src/core/lib/iomgr/socket_factory_posix.cc )
+  s.files += %w( src/core/lib/iomgr/socket_mutator.cc )
+  s.files += %w( src/core/lib/iomgr/socket_utils_common_posix.cc )
+  s.files += %w( src/core/lib/iomgr/socket_utils_linux.cc )
+  s.files += %w( src/core/lib/iomgr/socket_utils_posix.cc )
+  s.files += %w( src/core/lib/iomgr/socket_utils_uv.cc )
+  s.files += %w( src/core/lib/iomgr/socket_utils_windows.cc )
+  s.files += %w( src/core/lib/iomgr/socket_windows.cc )
+  s.files += %w( src/core/lib/iomgr/tcp_client_posix.cc )
+  s.files += %w( src/core/lib/iomgr/tcp_client_uv.cc )
+  s.files += %w( src/core/lib/iomgr/tcp_client_windows.cc )
+  s.files += %w( src/core/lib/iomgr/tcp_posix.cc )
+  s.files += %w( src/core/lib/iomgr/tcp_server_posix.cc )
+  s.files += %w( src/core/lib/iomgr/tcp_server_utils_posix_common.cc )
+  s.files += %w( src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc )
+  s.files += %w( src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc )
+  s.files += %w( src/core/lib/iomgr/tcp_server_uv.cc )
+  s.files += %w( src/core/lib/iomgr/tcp_server_windows.cc )
+  s.files += %w( src/core/lib/iomgr/tcp_uv.cc )
+  s.files += %w( src/core/lib/iomgr/tcp_windows.cc )
+  s.files += %w( src/core/lib/iomgr/time_averaged_stats.cc )
+  s.files += %w( src/core/lib/iomgr/timer_generic.cc )
+  s.files += %w( src/core/lib/iomgr/timer_heap.cc )
+  s.files += %w( src/core/lib/iomgr/timer_manager.cc )
+  s.files += %w( src/core/lib/iomgr/timer_uv.cc )
+  s.files += %w( src/core/lib/iomgr/udp_server.cc )
+  s.files += %w( src/core/lib/iomgr/unix_sockets_posix.cc )
+  s.files += %w( src/core/lib/iomgr/unix_sockets_posix_noop.cc )
+  s.files += %w( src/core/lib/iomgr/wakeup_fd_cv.cc )
+  s.files += %w( src/core/lib/iomgr/wakeup_fd_eventfd.cc )
+  s.files += %w( src/core/lib/iomgr/wakeup_fd_nospecial.cc )
+  s.files += %w( src/core/lib/iomgr/wakeup_fd_pipe.cc )
+  s.files += %w( src/core/lib/iomgr/wakeup_fd_posix.cc )
+  s.files += %w( src/core/lib/json/json.cc )
+  s.files += %w( src/core/lib/json/json_reader.cc )
+  s.files += %w( src/core/lib/json/json_string.cc )
+  s.files += %w( src/core/lib/json/json_writer.cc )
+  s.files += %w( src/core/lib/slice/b64.cc )
+  s.files += %w( src/core/lib/slice/percent_encoding.cc )
+  s.files += %w( src/core/lib/slice/slice.cc )
+  s.files += %w( src/core/lib/slice/slice_buffer.cc )
+  s.files += %w( src/core/lib/slice/slice_hash_table.cc )
+  s.files += %w( src/core/lib/slice/slice_intern.cc )
+  s.files += %w( src/core/lib/slice/slice_string_helpers.cc )
+  s.files += %w( src/core/lib/surface/alarm.cc )
+  s.files += %w( src/core/lib/surface/api_trace.cc )
+  s.files += %w( src/core/lib/surface/byte_buffer.cc )
+  s.files += %w( src/core/lib/surface/byte_buffer_reader.cc )
+  s.files += %w( src/core/lib/surface/call.cc )
+  s.files += %w( src/core/lib/surface/call_details.cc )
+  s.files += %w( src/core/lib/surface/call_log_batch.cc )
+  s.files += %w( src/core/lib/surface/channel.cc )
+  s.files += %w( src/core/lib/surface/channel_init.cc )
+  s.files += %w( src/core/lib/surface/channel_ping.cc )
+  s.files += %w( src/core/lib/surface/channel_stack_type.cc )
+  s.files += %w( src/core/lib/surface/completion_queue.cc )
+  s.files += %w( src/core/lib/surface/completion_queue_factory.cc )
+  s.files += %w( src/core/lib/surface/event_string.cc )
   s.files += %w( src/core/lib/surface/lame_client.cc )
-  s.files += %w( src/core/lib/surface/metadata_array.c )
-  s.files += %w( src/core/lib/surface/server.c )
-  s.files += %w( src/core/lib/surface/validate_metadata.c )
-  s.files += %w( src/core/lib/surface/version.c )
-  s.files += %w( src/core/lib/transport/bdp_estimator.c )
-  s.files += %w( src/core/lib/transport/byte_stream.c )
-  s.files += %w( src/core/lib/transport/connectivity_state.c )
-  s.files += %w( src/core/lib/transport/error_utils.c )
-  s.files += %w( src/core/lib/transport/metadata.c )
-  s.files += %w( src/core/lib/transport/metadata_batch.c )
-  s.files += %w( src/core/lib/transport/pid_controller.c )
-  s.files += %w( src/core/lib/transport/service_config.c )
-  s.files += %w( src/core/lib/transport/static_metadata.c )
-  s.files += %w( src/core/lib/transport/status_conversion.c )
-  s.files += %w( src/core/lib/transport/timeout_encoding.c )
-  s.files += %w( src/core/lib/transport/transport.c )
-  s.files += %w( src/core/lib/transport/transport_op_string.c )
-  s.files += %w( src/core/lib/debug/trace.c )
-  s.files += %w( src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c )
-  s.files += %w( src/core/ext/transport/chttp2/transport/bin_decoder.c )
-  s.files += %w( src/core/ext/transport/chttp2/transport/bin_encoder.c )
-  s.files += %w( src/core/ext/transport/chttp2/transport/chttp2_plugin.c )
-  s.files += %w( src/core/ext/transport/chttp2/transport/chttp2_transport.c )
-  s.files += %w( src/core/ext/transport/chttp2/transport/flow_control.c )
-  s.files += %w( src/core/ext/transport/chttp2/transport/frame_data.c )
-  s.files += %w( src/core/ext/transport/chttp2/transport/frame_goaway.c )
-  s.files += %w( src/core/ext/transport/chttp2/transport/frame_ping.c )
-  s.files += %w( src/core/ext/transport/chttp2/transport/frame_rst_stream.c )
-  s.files += %w( src/core/ext/transport/chttp2/transport/frame_settings.c )
-  s.files += %w( src/core/ext/transport/chttp2/transport/frame_window_update.c )
-  s.files += %w( src/core/ext/transport/chttp2/transport/hpack_encoder.c )
-  s.files += %w( src/core/ext/transport/chttp2/transport/hpack_parser.c )
-  s.files += %w( src/core/ext/transport/chttp2/transport/hpack_table.c )
-  s.files += %w( src/core/ext/transport/chttp2/transport/http2_settings.c )
-  s.files += %w( src/core/ext/transport/chttp2/transport/huffsyms.c )
-  s.files += %w( src/core/ext/transport/chttp2/transport/incoming_metadata.c )
-  s.files += %w( src/core/ext/transport/chttp2/transport/parsing.c )
-  s.files += %w( src/core/ext/transport/chttp2/transport/stream_lists.c )
-  s.files += %w( src/core/ext/transport/chttp2/transport/stream_map.c )
-  s.files += %w( src/core/ext/transport/chttp2/transport/varint.c )
-  s.files += %w( src/core/ext/transport/chttp2/transport/writing.c )
-  s.files += %w( src/core/ext/transport/chttp2/alpn/alpn.c )
-  s.files += %w( src/core/ext/filters/http/client/http_client_filter.c )
-  s.files += %w( src/core/ext/filters/http/http_filters_plugin.c )
-  s.files += %w( src/core/ext/filters/http/message_compress/message_compress_filter.c )
-  s.files += %w( src/core/ext/filters/http/server/http_server_filter.c )
-  s.files += %w( src/core/lib/http/httpcli_security_connector.c )
-  s.files += %w( src/core/lib/security/context/security_context.c )
-  s.files += %w( src/core/lib/security/credentials/composite/composite_credentials.c )
-  s.files += %w( src/core/lib/security/credentials/credentials.c )
-  s.files += %w( src/core/lib/security/credentials/credentials_metadata.c )
-  s.files += %w( src/core/lib/security/credentials/fake/fake_credentials.c )
-  s.files += %w( src/core/lib/security/credentials/google_default/credentials_generic.c )
-  s.files += %w( src/core/lib/security/credentials/google_default/google_default_credentials.c )
-  s.files += %w( src/core/lib/security/credentials/iam/iam_credentials.c )
-  s.files += %w( src/core/lib/security/credentials/jwt/json_token.c )
-  s.files += %w( src/core/lib/security/credentials/jwt/jwt_credentials.c )
-  s.files += %w( src/core/lib/security/credentials/jwt/jwt_verifier.c )
-  s.files += %w( src/core/lib/security/credentials/oauth2/oauth2_credentials.c )
-  s.files += %w( src/core/lib/security/credentials/plugin/plugin_credentials.c )
-  s.files += %w( src/core/lib/security/credentials/ssl/ssl_credentials.c )
-  s.files += %w( src/core/lib/security/transport/client_auth_filter.c )
-  s.files += %w( src/core/lib/security/transport/lb_targets_info.c )
-  s.files += %w( src/core/lib/security/transport/secure_endpoint.c )
-  s.files += %w( src/core/lib/security/transport/security_connector.c )
-  s.files += %w( src/core/lib/security/transport/security_handshaker.c )
-  s.files += %w( src/core/lib/security/transport/server_auth_filter.c )
-  s.files += %w( src/core/lib/security/transport/tsi_error.c )
-  s.files += %w( src/core/lib/security/util/json_util.c )
-  s.files += %w( src/core/lib/surface/init_secure.c )
-  s.files += %w( src/core/tsi/fake_transport_security.c )
-  s.files += %w( src/core/tsi/gts_transport_security.c )
-  s.files += %w( src/core/tsi/ssl_transport_security.c )
-  s.files += %w( src/core/tsi/transport_security_grpc.c )
-  s.files += %w( src/core/tsi/transport_security.c )
-  s.files += %w( src/core/tsi/transport_security_adapter.c )
-  s.files += %w( src/core/ext/transport/chttp2/server/chttp2_server.c )
-  s.files += %w( src/core/ext/transport/chttp2/client/secure/secure_channel_create.c )
-  s.files += %w( src/core/ext/filters/client_channel/channel_connectivity.c )
-  s.files += %w( src/core/ext/filters/client_channel/client_channel.c )
-  s.files += %w( src/core/ext/filters/client_channel/client_channel_factory.c )
-  s.files += %w( src/core/ext/filters/client_channel/client_channel_plugin.c )
-  s.files += %w( src/core/ext/filters/client_channel/connector.c )
-  s.files += %w( src/core/ext/filters/client_channel/http_connect_handshaker.c )
-  s.files += %w( src/core/ext/filters/client_channel/http_proxy.c )
-  s.files += %w( src/core/ext/filters/client_channel/lb_policy.c )
-  s.files += %w( src/core/ext/filters/client_channel/lb_policy_factory.c )
-  s.files += %w( src/core/ext/filters/client_channel/lb_policy_registry.c )
-  s.files += %w( src/core/ext/filters/client_channel/parse_address.c )
-  s.files += %w( src/core/ext/filters/client_channel/proxy_mapper.c )
-  s.files += %w( src/core/ext/filters/client_channel/proxy_mapper_registry.c )
-  s.files += %w( src/core/ext/filters/client_channel/resolver.c )
-  s.files += %w( src/core/ext/filters/client_channel/resolver_factory.c )
-  s.files += %w( src/core/ext/filters/client_channel/resolver_registry.c )
-  s.files += %w( src/core/ext/filters/client_channel/retry_throttle.c )
-  s.files += %w( src/core/ext/filters/client_channel/subchannel.c )
-  s.files += %w( src/core/ext/filters/client_channel/subchannel_index.c )
-  s.files += %w( src/core/ext/filters/client_channel/uri_parser.c )
-  s.files += %w( src/core/ext/filters/deadline/deadline_filter.c )
-  s.files += %w( src/core/ext/transport/chttp2/client/chttp2_connector.c )
-  s.files += %w( src/core/ext/transport/chttp2/server/insecure/server_chttp2.c )
-  s.files += %w( src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c )
-  s.files += %w( src/core/ext/transport/chttp2/client/insecure/channel_create.c )
-  s.files += %w( src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c )
-  s.files += %w( src/core/ext/transport/inproc/inproc_plugin.c )
-  s.files += %w( src/core/ext/transport/inproc/inproc_transport.c )
-  s.files += %w( src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c )
-  s.files += %w( src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c )
-  s.files += %w( src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c )
-  s.files += %w( src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c )
-  s.files += %w( src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c )
+  s.files += %w( src/core/lib/surface/metadata_array.cc )
+  s.files += %w( src/core/lib/surface/server.cc )
+  s.files += %w( src/core/lib/surface/validate_metadata.cc )
+  s.files += %w( src/core/lib/surface/version.cc )
+  s.files += %w( src/core/lib/transport/bdp_estimator.cc )
+  s.files += %w( src/core/lib/transport/byte_stream.cc )
+  s.files += %w( src/core/lib/transport/connectivity_state.cc )
+  s.files += %w( src/core/lib/transport/error_utils.cc )
+  s.files += %w( src/core/lib/transport/metadata.cc )
+  s.files += %w( src/core/lib/transport/metadata_batch.cc )
+  s.files += %w( src/core/lib/transport/pid_controller.cc )
+  s.files += %w( src/core/lib/transport/service_config.cc )
+  s.files += %w( src/core/lib/transport/static_metadata.cc )
+  s.files += %w( src/core/lib/transport/status_conversion.cc )
+  s.files += %w( src/core/lib/transport/timeout_encoding.cc )
+  s.files += %w( src/core/lib/transport/transport.cc )
+  s.files += %w( src/core/lib/transport/transport_op_string.cc )
+  s.files += %w( src/core/lib/debug/trace.cc )
+  s.files += %w( src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc )
+  s.files += %w( src/core/ext/transport/chttp2/transport/bin_decoder.cc )
+  s.files += %w( src/core/ext/transport/chttp2/transport/bin_encoder.cc )
+  s.files += %w( src/core/ext/transport/chttp2/transport/chttp2_plugin.cc )
+  s.files += %w( src/core/ext/transport/chttp2/transport/chttp2_transport.cc )
+  s.files += %w( src/core/ext/transport/chttp2/transport/flow_control.cc )
+  s.files += %w( src/core/ext/transport/chttp2/transport/frame_data.cc )
+  s.files += %w( src/core/ext/transport/chttp2/transport/frame_goaway.cc )
+  s.files += %w( src/core/ext/transport/chttp2/transport/frame_ping.cc )
+  s.files += %w( src/core/ext/transport/chttp2/transport/frame_rst_stream.cc )
+  s.files += %w( src/core/ext/transport/chttp2/transport/frame_settings.cc )
+  s.files += %w( src/core/ext/transport/chttp2/transport/frame_window_update.cc )
+  s.files += %w( src/core/ext/transport/chttp2/transport/hpack_encoder.cc )
+  s.files += %w( src/core/ext/transport/chttp2/transport/hpack_parser.cc )
+  s.files += %w( src/core/ext/transport/chttp2/transport/hpack_table.cc )
+  s.files += %w( src/core/ext/transport/chttp2/transport/http2_settings.cc )
+  s.files += %w( src/core/ext/transport/chttp2/transport/huffsyms.cc )
+  s.files += %w( src/core/ext/transport/chttp2/transport/incoming_metadata.cc )
+  s.files += %w( src/core/ext/transport/chttp2/transport/parsing.cc )
+  s.files += %w( src/core/ext/transport/chttp2/transport/stream_lists.cc )
+  s.files += %w( src/core/ext/transport/chttp2/transport/stream_map.cc )
+  s.files += %w( src/core/ext/transport/chttp2/transport/varint.cc )
+  s.files += %w( src/core/ext/transport/chttp2/transport/writing.cc )
+  s.files += %w( src/core/ext/transport/chttp2/alpn/alpn.cc )
+  s.files += %w( src/core/ext/filters/http/client/http_client_filter.cc )
+  s.files += %w( src/core/ext/filters/http/http_filters_plugin.cc )
+  s.files += %w( src/core/ext/filters/http/message_compress/message_compress_filter.cc )
+  s.files += %w( src/core/ext/filters/http/server/http_server_filter.cc )
+  s.files += %w( src/core/lib/http/httpcli_security_connector.cc )
+  s.files += %w( src/core/lib/security/context/security_context.cc )
+  s.files += %w( src/core/lib/security/credentials/composite/composite_credentials.cc )
+  s.files += %w( src/core/lib/security/credentials/credentials.cc )
+  s.files += %w( src/core/lib/security/credentials/credentials_metadata.cc )
+  s.files += %w( src/core/lib/security/credentials/fake/fake_credentials.cc )
+  s.files += %w( src/core/lib/security/credentials/google_default/credentials_generic.cc )
+  s.files += %w( src/core/lib/security/credentials/google_default/google_default_credentials.cc )
+  s.files += %w( src/core/lib/security/credentials/iam/iam_credentials.cc )
+  s.files += %w( src/core/lib/security/credentials/jwt/json_token.cc )
+  s.files += %w( src/core/lib/security/credentials/jwt/jwt_credentials.cc )
+  s.files += %w( src/core/lib/security/credentials/jwt/jwt_verifier.cc )
+  s.files += %w( src/core/lib/security/credentials/oauth2/oauth2_credentials.cc )
+  s.files += %w( src/core/lib/security/credentials/plugin/plugin_credentials.cc )
+  s.files += %w( src/core/lib/security/credentials/ssl/ssl_credentials.cc )
+  s.files += %w( src/core/lib/security/transport/client_auth_filter.cc )
+  s.files += %w( src/core/lib/security/transport/lb_targets_info.cc )
+  s.files += %w( src/core/lib/security/transport/secure_endpoint.cc )
+  s.files += %w( src/core/lib/security/transport/security_connector.cc )
+  s.files += %w( src/core/lib/security/transport/security_handshaker.cc )
+  s.files += %w( src/core/lib/security/transport/server_auth_filter.cc )
+  s.files += %w( src/core/lib/security/transport/tsi_error.cc )
+  s.files += %w( src/core/lib/security/util/json_util.cc )
+  s.files += %w( src/core/lib/surface/init_secure.cc )
+  s.files += %w( src/core/tsi/fake_transport_security.cc )
+  s.files += %w( src/core/tsi/gts_transport_security.cc )
+  s.files += %w( src/core/tsi/ssl_transport_security.cc )
+  s.files += %w( src/core/tsi/transport_security_grpc.cc )
+  s.files += %w( src/core/tsi/transport_security.cc )
+  s.files += %w( src/core/tsi/transport_security_adapter.cc )
+  s.files += %w( src/core/ext/transport/chttp2/server/chttp2_server.cc )
+  s.files += %w( src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc )
+  s.files += %w( src/core/ext/filters/client_channel/channel_connectivity.cc )
+  s.files += %w( src/core/ext/filters/client_channel/client_channel.cc )
+  s.files += %w( src/core/ext/filters/client_channel/client_channel_factory.cc )
+  s.files += %w( src/core/ext/filters/client_channel/client_channel_plugin.cc )
+  s.files += %w( src/core/ext/filters/client_channel/connector.cc )
+  s.files += %w( src/core/ext/filters/client_channel/http_connect_handshaker.cc )
+  s.files += %w( src/core/ext/filters/client_channel/http_proxy.cc )
+  s.files += %w( src/core/ext/filters/client_channel/lb_policy.cc )
+  s.files += %w( src/core/ext/filters/client_channel/lb_policy_factory.cc )
+  s.files += %w( src/core/ext/filters/client_channel/lb_policy_registry.cc )
+  s.files += %w( src/core/ext/filters/client_channel/parse_address.cc )
+  s.files += %w( src/core/ext/filters/client_channel/proxy_mapper.cc )
+  s.files += %w( src/core/ext/filters/client_channel/proxy_mapper_registry.cc )
+  s.files += %w( src/core/ext/filters/client_channel/resolver.cc )
+  s.files += %w( src/core/ext/filters/client_channel/resolver_factory.cc )
+  s.files += %w( src/core/ext/filters/client_channel/resolver_registry.cc )
+  s.files += %w( src/core/ext/filters/client_channel/retry_throttle.cc )
+  s.files += %w( src/core/ext/filters/client_channel/subchannel.cc )
+  s.files += %w( src/core/ext/filters/client_channel/subchannel_index.cc )
+  s.files += %w( src/core/ext/filters/client_channel/uri_parser.cc )
+  s.files += %w( src/core/ext/filters/deadline/deadline_filter.cc )
+  s.files += %w( src/core/ext/transport/chttp2/client/chttp2_connector.cc )
+  s.files += %w( src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc )
+  s.files += %w( src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc )
+  s.files += %w( src/core/ext/transport/chttp2/client/insecure/channel_create.cc )
+  s.files += %w( src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc )
+  s.files += %w( src/core/ext/transport/inproc/inproc_plugin.cc )
+  s.files += %w( src/core/ext/transport/inproc/inproc_transport.cc )
+  s.files += %w( src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc )
+  s.files += %w( src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc )
+  s.files += %w( src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc )
+  s.files += %w( src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc )
+  s.files += %w( src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc )
   s.files += %w( src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c )
   s.files += %w( third_party/nanopb/pb_common.c )
   s.files += %w( third_party/nanopb/pb_decode.c )
   s.files += %w( third_party/nanopb/pb_encode.c )
-  s.files += %w( src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c )
-  s.files += %w( src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c )
-  s.files += %w( src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c )
-  s.files += %w( src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c )
-  s.files += %w( src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c )
-  s.files += %w( src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c )
-  s.files += %w( src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c )
-  s.files += %w( src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c )
-  s.files += %w( src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c )
-  s.files += %w( src/core/ext/filters/load_reporting/server_load_reporting_filter.c )
-  s.files += %w( src/core/ext/filters/load_reporting/server_load_reporting_plugin.c )
-  s.files += %w( src/core/ext/census/base_resources.c )
-  s.files += %w( src/core/ext/census/context.c )
+  s.files += %w( src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc )
+  s.files += %w( src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc )
+  s.files += %w( src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc )
+  s.files += %w( src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc )
+  s.files += %w( src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc )
+  s.files += %w( src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc )
+  s.files += %w( src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc )
+  s.files += %w( src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc )
+  s.files += %w( src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc )
+  s.files += %w( src/core/ext/filters/load_reporting/server_load_reporting_filter.cc )
+  s.files += %w( src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc )
+  s.files += %w( src/core/ext/census/base_resources.cc )
+  s.files += %w( src/core/ext/census/context.cc )
   s.files += %w( src/core/ext/census/gen/census.pb.c )
   s.files += %w( src/core/ext/census/gen/trace_context.pb.c )
-  s.files += %w( src/core/ext/census/grpc_context.c )
-  s.files += %w( src/core/ext/census/grpc_filter.c )
-  s.files += %w( src/core/ext/census/grpc_plugin.c )
-  s.files += %w( src/core/ext/census/initialize.c )
-  s.files += %w( src/core/ext/census/intrusive_hash_map.c )
-  s.files += %w( src/core/ext/census/mlog.c )
-  s.files += %w( src/core/ext/census/operation.c )
-  s.files += %w( src/core/ext/census/placeholders.c )
-  s.files += %w( src/core/ext/census/resource.c )
-  s.files += %w( src/core/ext/census/trace_context.c )
-  s.files += %w( src/core/ext/census/tracing.c )
-  s.files += %w( src/core/ext/filters/max_age/max_age_filter.c )
-  s.files += %w( src/core/ext/filters/message_size/message_size_filter.c )
-  s.files += %w( src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c )
-  s.files += %w( src/core/ext/filters/workarounds/workaround_utils.c )
-  s.files += %w( src/core/plugin_registry/grpc_plugin_registry.c )
+  s.files += %w( src/core/ext/census/grpc_context.cc )
+  s.files += %w( src/core/ext/census/grpc_filter.cc )
+  s.files += %w( src/core/ext/census/grpc_plugin.cc )
+  s.files += %w( src/core/ext/census/initialize.cc )
+  s.files += %w( src/core/ext/census/intrusive_hash_map.cc )
+  s.files += %w( src/core/ext/census/mlog.cc )
+  s.files += %w( src/core/ext/census/operation.cc )
+  s.files += %w( src/core/ext/census/placeholders.cc )
+  s.files += %w( src/core/ext/census/resource.cc )
+  s.files += %w( src/core/ext/census/trace_context.cc )
+  s.files += %w( src/core/ext/census/tracing.cc )
+  s.files += %w( src/core/ext/filters/max_age/max_age_filter.cc )
+  s.files += %w( src/core/ext/filters/message_size/message_size_filter.cc )
+  s.files += %w( src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc )
+  s.files += %w( src/core/ext/filters/workarounds/workaround_utils.cc )
+  s.files += %w( src/core/plugin_registry/grpc_plugin_registry.cc )
   s.files += %w( third_party/boringssl/crypto/aes/internal.h )
   s.files += %w( third_party/boringssl/crypto/asn1/asn1_locl.h )
   s.files += %w( third_party/boringssl/crypto/bio/internal.h )
diff --git a/grpc.gyp b/grpc.gyp
index 6331b76..5579f02 100644
--- a/grpc.gyp
+++ b/grpc.gyp
@@ -98,6 +98,7 @@
           '-fprofile-arcs',
           '-ftest-coverage',
           '-rdynamic',
+          '-lstdc++',
         ],
       }],
       ['grpc_alpine=="true"', {
@@ -157,52 +158,52 @@
       'dependencies': [
       ],
       'sources': [
-        'src/core/lib/profiling/basic_timers.c',
-        'src/core/lib/profiling/stap_timers.c',
-        'src/core/lib/support/alloc.c',
-        'src/core/lib/support/arena.c',
-        'src/core/lib/support/atm.c',
-        'src/core/lib/support/avl.c',
-        'src/core/lib/support/backoff.c',
-        'src/core/lib/support/cmdline.c',
-        'src/core/lib/support/cpu_iphone.c',
-        'src/core/lib/support/cpu_linux.c',
-        'src/core/lib/support/cpu_posix.c',
-        'src/core/lib/support/cpu_windows.c',
-        'src/core/lib/support/env_linux.c',
-        'src/core/lib/support/env_posix.c',
-        'src/core/lib/support/env_windows.c',
-        'src/core/lib/support/histogram.c',
-        'src/core/lib/support/host_port.c',
-        'src/core/lib/support/log.c',
-        'src/core/lib/support/log_android.c',
-        'src/core/lib/support/log_linux.c',
-        'src/core/lib/support/log_posix.c',
-        'src/core/lib/support/log_windows.c',
-        'src/core/lib/support/mpscq.c',
-        'src/core/lib/support/murmur_hash.c',
-        'src/core/lib/support/stack_lockfree.c',
-        'src/core/lib/support/string.c',
-        'src/core/lib/support/string_posix.c',
-        'src/core/lib/support/string_util_windows.c',
-        'src/core/lib/support/string_windows.c',
-        'src/core/lib/support/subprocess_posix.c',
-        'src/core/lib/support/subprocess_windows.c',
-        'src/core/lib/support/sync.c',
-        'src/core/lib/support/sync_posix.c',
-        'src/core/lib/support/sync_windows.c',
-        'src/core/lib/support/thd.c',
-        'src/core/lib/support/thd_posix.c',
-        'src/core/lib/support/thd_windows.c',
-        'src/core/lib/support/time.c',
-        'src/core/lib/support/time_posix.c',
-        'src/core/lib/support/time_precise.c',
-        'src/core/lib/support/time_windows.c',
-        'src/core/lib/support/tls_pthread.c',
-        'src/core/lib/support/tmpfile_msys.c',
-        'src/core/lib/support/tmpfile_posix.c',
-        'src/core/lib/support/tmpfile_windows.c',
-        'src/core/lib/support/wrap_memcpy.c',
+        'src/core/lib/profiling/basic_timers.cc',
+        'src/core/lib/profiling/stap_timers.cc',
+        'src/core/lib/support/alloc.cc',
+        'src/core/lib/support/arena.cc',
+        'src/core/lib/support/atm.cc',
+        'src/core/lib/support/avl.cc',
+        'src/core/lib/support/backoff.cc',
+        'src/core/lib/support/cmdline.cc',
+        'src/core/lib/support/cpu_iphone.cc',
+        'src/core/lib/support/cpu_linux.cc',
+        'src/core/lib/support/cpu_posix.cc',
+        'src/core/lib/support/cpu_windows.cc',
+        'src/core/lib/support/env_linux.cc',
+        'src/core/lib/support/env_posix.cc',
+        'src/core/lib/support/env_windows.cc',
+        'src/core/lib/support/histogram.cc',
+        'src/core/lib/support/host_port.cc',
+        'src/core/lib/support/log.cc',
+        'src/core/lib/support/log_android.cc',
+        'src/core/lib/support/log_linux.cc',
+        'src/core/lib/support/log_posix.cc',
+        'src/core/lib/support/log_windows.cc',
+        'src/core/lib/support/mpscq.cc',
+        'src/core/lib/support/murmur_hash.cc',
+        'src/core/lib/support/stack_lockfree.cc',
+        'src/core/lib/support/string.cc',
+        'src/core/lib/support/string_posix.cc',
+        'src/core/lib/support/string_util_windows.cc',
+        'src/core/lib/support/string_windows.cc',
+        'src/core/lib/support/subprocess_posix.cc',
+        'src/core/lib/support/subprocess_windows.cc',
+        'src/core/lib/support/sync.cc',
+        'src/core/lib/support/sync_posix.cc',
+        'src/core/lib/support/sync_windows.cc',
+        'src/core/lib/support/thd.cc',
+        'src/core/lib/support/thd_posix.cc',
+        'src/core/lib/support/thd_windows.cc',
+        'src/core/lib/support/time.cc',
+        'src/core/lib/support/time_posix.cc',
+        'src/core/lib/support/time_precise.cc',
+        'src/core/lib/support/time_windows.cc',
+        'src/core/lib/support/tls_pthread.cc',
+        'src/core/lib/support/tmpfile_msys.cc',
+        'src/core/lib/support/tmpfile_posix.cc',
+        'src/core/lib/support/tmpfile_windows.cc',
+        'src/core/lib/support/wrap_memcpy.cc',
       ],
     },
     {
@@ -222,267 +223,267 @@
         'gpr',
       ],
       'sources': [
-        'src/core/lib/surface/init.c',
-        'src/core/lib/channel/channel_args.c',
-        'src/core/lib/channel/channel_stack.c',
-        'src/core/lib/channel/channel_stack_builder.c',
-        'src/core/lib/channel/connected_channel.c',
-        'src/core/lib/channel/handshaker.c',
-        'src/core/lib/channel/handshaker_factory.c',
-        'src/core/lib/channel/handshaker_registry.c',
-        'src/core/lib/compression/compression.c',
-        'src/core/lib/compression/message_compress.c',
-        'src/core/lib/compression/stream_compression.c',
-        'src/core/lib/compression/stream_compression_gzip.c',
-        'src/core/lib/compression/stream_compression_identity.c',
-        'src/core/lib/debug/stats.c',
-        'src/core/lib/debug/stats_data.c',
-        'src/core/lib/http/format_request.c',
-        'src/core/lib/http/httpcli.c',
-        'src/core/lib/http/parser.c',
-        'src/core/lib/iomgr/call_combiner.c',
-        'src/core/lib/iomgr/closure.c',
-        'src/core/lib/iomgr/combiner.c',
-        'src/core/lib/iomgr/endpoint.c',
-        'src/core/lib/iomgr/endpoint_pair_posix.c',
-        'src/core/lib/iomgr/endpoint_pair_uv.c',
-        'src/core/lib/iomgr/endpoint_pair_windows.c',
-        'src/core/lib/iomgr/error.c',
-        'src/core/lib/iomgr/ev_epoll1_linux.c',
-        'src/core/lib/iomgr/ev_epollex_linux.c',
-        'src/core/lib/iomgr/ev_epollsig_linux.c',
-        'src/core/lib/iomgr/ev_poll_posix.c',
-        'src/core/lib/iomgr/ev_posix.c',
-        'src/core/lib/iomgr/ev_windows.c',
-        'src/core/lib/iomgr/exec_ctx.c',
-        'src/core/lib/iomgr/executor.c',
-        'src/core/lib/iomgr/gethostname_fallback.c',
-        'src/core/lib/iomgr/gethostname_host_name_max.c',
-        'src/core/lib/iomgr/gethostname_sysconf.c',
-        'src/core/lib/iomgr/iocp_windows.c',
-        'src/core/lib/iomgr/iomgr.c',
-        'src/core/lib/iomgr/iomgr_posix.c',
-        'src/core/lib/iomgr/iomgr_uv.c',
-        'src/core/lib/iomgr/iomgr_windows.c',
-        'src/core/lib/iomgr/is_epollexclusive_available.c',
-        'src/core/lib/iomgr/load_file.c',
-        'src/core/lib/iomgr/lockfree_event.c',
-        'src/core/lib/iomgr/network_status_tracker.c',
-        'src/core/lib/iomgr/polling_entity.c',
-        'src/core/lib/iomgr/pollset_set_uv.c',
-        'src/core/lib/iomgr/pollset_set_windows.c',
-        'src/core/lib/iomgr/pollset_uv.c',
-        'src/core/lib/iomgr/pollset_windows.c',
-        'src/core/lib/iomgr/resolve_address_posix.c',
-        'src/core/lib/iomgr/resolve_address_uv.c',
-        'src/core/lib/iomgr/resolve_address_windows.c',
-        'src/core/lib/iomgr/resource_quota.c',
-        'src/core/lib/iomgr/sockaddr_utils.c',
-        'src/core/lib/iomgr/socket_factory_posix.c',
-        'src/core/lib/iomgr/socket_mutator.c',
-        'src/core/lib/iomgr/socket_utils_common_posix.c',
-        'src/core/lib/iomgr/socket_utils_linux.c',
-        'src/core/lib/iomgr/socket_utils_posix.c',
-        'src/core/lib/iomgr/socket_utils_uv.c',
-        'src/core/lib/iomgr/socket_utils_windows.c',
-        'src/core/lib/iomgr/socket_windows.c',
-        'src/core/lib/iomgr/tcp_client_posix.c',
-        'src/core/lib/iomgr/tcp_client_uv.c',
-        'src/core/lib/iomgr/tcp_client_windows.c',
-        'src/core/lib/iomgr/tcp_posix.c',
-        'src/core/lib/iomgr/tcp_server_posix.c',
-        'src/core/lib/iomgr/tcp_server_utils_posix_common.c',
-        'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c',
-        'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c',
-        'src/core/lib/iomgr/tcp_server_uv.c',
-        'src/core/lib/iomgr/tcp_server_windows.c',
-        'src/core/lib/iomgr/tcp_uv.c',
-        'src/core/lib/iomgr/tcp_windows.c',
-        'src/core/lib/iomgr/time_averaged_stats.c',
-        'src/core/lib/iomgr/timer_generic.c',
-        'src/core/lib/iomgr/timer_heap.c',
-        'src/core/lib/iomgr/timer_manager.c',
-        'src/core/lib/iomgr/timer_uv.c',
-        'src/core/lib/iomgr/udp_server.c',
-        'src/core/lib/iomgr/unix_sockets_posix.c',
-        'src/core/lib/iomgr/unix_sockets_posix_noop.c',
-        'src/core/lib/iomgr/wakeup_fd_cv.c',
-        'src/core/lib/iomgr/wakeup_fd_eventfd.c',
-        'src/core/lib/iomgr/wakeup_fd_nospecial.c',
-        'src/core/lib/iomgr/wakeup_fd_pipe.c',
-        'src/core/lib/iomgr/wakeup_fd_posix.c',
-        'src/core/lib/json/json.c',
-        'src/core/lib/json/json_reader.c',
-        'src/core/lib/json/json_string.c',
-        'src/core/lib/json/json_writer.c',
-        'src/core/lib/slice/b64.c',
-        'src/core/lib/slice/percent_encoding.c',
-        'src/core/lib/slice/slice.c',
-        'src/core/lib/slice/slice_buffer.c',
-        'src/core/lib/slice/slice_hash_table.c',
-        'src/core/lib/slice/slice_intern.c',
-        'src/core/lib/slice/slice_string_helpers.c',
-        'src/core/lib/surface/alarm.c',
-        'src/core/lib/surface/api_trace.c',
-        'src/core/lib/surface/byte_buffer.c',
-        'src/core/lib/surface/byte_buffer_reader.c',
-        'src/core/lib/surface/call.c',
-        'src/core/lib/surface/call_details.c',
-        'src/core/lib/surface/call_log_batch.c',
-        'src/core/lib/surface/channel.c',
-        'src/core/lib/surface/channel_init.c',
-        'src/core/lib/surface/channel_ping.c',
-        'src/core/lib/surface/channel_stack_type.c',
-        'src/core/lib/surface/completion_queue.c',
-        'src/core/lib/surface/completion_queue_factory.c',
-        'src/core/lib/surface/event_string.c',
+        'src/core/lib/surface/init.cc',
+        'src/core/lib/channel/channel_args.cc',
+        'src/core/lib/channel/channel_stack.cc',
+        'src/core/lib/channel/channel_stack_builder.cc',
+        'src/core/lib/channel/connected_channel.cc',
+        'src/core/lib/channel/handshaker.cc',
+        'src/core/lib/channel/handshaker_factory.cc',
+        'src/core/lib/channel/handshaker_registry.cc',
+        'src/core/lib/compression/compression.cc',
+        'src/core/lib/compression/message_compress.cc',
+        'src/core/lib/compression/stream_compression.cc',
+        'src/core/lib/compression/stream_compression_gzip.cc',
+        'src/core/lib/compression/stream_compression_identity.cc',
+        'src/core/lib/debug/stats.cc',
+        'src/core/lib/debug/stats_data.cc',
+        'src/core/lib/http/format_request.cc',
+        'src/core/lib/http/httpcli.cc',
+        'src/core/lib/http/parser.cc',
+        'src/core/lib/iomgr/call_combiner.cc',
+        'src/core/lib/iomgr/closure.cc',
+        'src/core/lib/iomgr/combiner.cc',
+        'src/core/lib/iomgr/endpoint.cc',
+        'src/core/lib/iomgr/endpoint_pair_posix.cc',
+        'src/core/lib/iomgr/endpoint_pair_uv.cc',
+        'src/core/lib/iomgr/endpoint_pair_windows.cc',
+        'src/core/lib/iomgr/error.cc',
+        'src/core/lib/iomgr/ev_epoll1_linux.cc',
+        'src/core/lib/iomgr/ev_epollex_linux.cc',
+        'src/core/lib/iomgr/ev_epollsig_linux.cc',
+        'src/core/lib/iomgr/ev_poll_posix.cc',
+        'src/core/lib/iomgr/ev_posix.cc',
+        'src/core/lib/iomgr/ev_windows.cc',
+        'src/core/lib/iomgr/exec_ctx.cc',
+        'src/core/lib/iomgr/executor.cc',
+        'src/core/lib/iomgr/gethostname_fallback.cc',
+        'src/core/lib/iomgr/gethostname_host_name_max.cc',
+        'src/core/lib/iomgr/gethostname_sysconf.cc',
+        'src/core/lib/iomgr/iocp_windows.cc',
+        'src/core/lib/iomgr/iomgr.cc',
+        'src/core/lib/iomgr/iomgr_posix.cc',
+        'src/core/lib/iomgr/iomgr_uv.cc',
+        'src/core/lib/iomgr/iomgr_windows.cc',
+        'src/core/lib/iomgr/is_epollexclusive_available.cc',
+        'src/core/lib/iomgr/load_file.cc',
+        'src/core/lib/iomgr/lockfree_event.cc',
+        'src/core/lib/iomgr/network_status_tracker.cc',
+        'src/core/lib/iomgr/polling_entity.cc',
+        'src/core/lib/iomgr/pollset_set_uv.cc',
+        'src/core/lib/iomgr/pollset_set_windows.cc',
+        'src/core/lib/iomgr/pollset_uv.cc',
+        'src/core/lib/iomgr/pollset_windows.cc',
+        'src/core/lib/iomgr/resolve_address_posix.cc',
+        'src/core/lib/iomgr/resolve_address_uv.cc',
+        'src/core/lib/iomgr/resolve_address_windows.cc',
+        'src/core/lib/iomgr/resource_quota.cc',
+        'src/core/lib/iomgr/sockaddr_utils.cc',
+        'src/core/lib/iomgr/socket_factory_posix.cc',
+        'src/core/lib/iomgr/socket_mutator.cc',
+        'src/core/lib/iomgr/socket_utils_common_posix.cc',
+        'src/core/lib/iomgr/socket_utils_linux.cc',
+        'src/core/lib/iomgr/socket_utils_posix.cc',
+        'src/core/lib/iomgr/socket_utils_uv.cc',
+        'src/core/lib/iomgr/socket_utils_windows.cc',
+        'src/core/lib/iomgr/socket_windows.cc',
+        'src/core/lib/iomgr/tcp_client_posix.cc',
+        'src/core/lib/iomgr/tcp_client_uv.cc',
+        'src/core/lib/iomgr/tcp_client_windows.cc',
+        'src/core/lib/iomgr/tcp_posix.cc',
+        'src/core/lib/iomgr/tcp_server_posix.cc',
+        'src/core/lib/iomgr/tcp_server_utils_posix_common.cc',
+        'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc',
+        'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc',
+        'src/core/lib/iomgr/tcp_server_uv.cc',
+        'src/core/lib/iomgr/tcp_server_windows.cc',
+        'src/core/lib/iomgr/tcp_uv.cc',
+        'src/core/lib/iomgr/tcp_windows.cc',
+        'src/core/lib/iomgr/time_averaged_stats.cc',
+        'src/core/lib/iomgr/timer_generic.cc',
+        'src/core/lib/iomgr/timer_heap.cc',
+        'src/core/lib/iomgr/timer_manager.cc',
+        'src/core/lib/iomgr/timer_uv.cc',
+        'src/core/lib/iomgr/udp_server.cc',
+        'src/core/lib/iomgr/unix_sockets_posix.cc',
+        'src/core/lib/iomgr/unix_sockets_posix_noop.cc',
+        'src/core/lib/iomgr/wakeup_fd_cv.cc',
+        'src/core/lib/iomgr/wakeup_fd_eventfd.cc',
+        'src/core/lib/iomgr/wakeup_fd_nospecial.cc',
+        'src/core/lib/iomgr/wakeup_fd_pipe.cc',
+        'src/core/lib/iomgr/wakeup_fd_posix.cc',
+        'src/core/lib/json/json.cc',
+        'src/core/lib/json/json_reader.cc',
+        'src/core/lib/json/json_string.cc',
+        'src/core/lib/json/json_writer.cc',
+        'src/core/lib/slice/b64.cc',
+        'src/core/lib/slice/percent_encoding.cc',
+        'src/core/lib/slice/slice.cc',
+        'src/core/lib/slice/slice_buffer.cc',
+        'src/core/lib/slice/slice_hash_table.cc',
+        'src/core/lib/slice/slice_intern.cc',
+        'src/core/lib/slice/slice_string_helpers.cc',
+        'src/core/lib/surface/alarm.cc',
+        'src/core/lib/surface/api_trace.cc',
+        'src/core/lib/surface/byte_buffer.cc',
+        'src/core/lib/surface/byte_buffer_reader.cc',
+        'src/core/lib/surface/call.cc',
+        'src/core/lib/surface/call_details.cc',
+        'src/core/lib/surface/call_log_batch.cc',
+        'src/core/lib/surface/channel.cc',
+        'src/core/lib/surface/channel_init.cc',
+        'src/core/lib/surface/channel_ping.cc',
+        'src/core/lib/surface/channel_stack_type.cc',
+        'src/core/lib/surface/completion_queue.cc',
+        'src/core/lib/surface/completion_queue_factory.cc',
+        'src/core/lib/surface/event_string.cc',
         'src/core/lib/surface/lame_client.cc',
-        'src/core/lib/surface/metadata_array.c',
-        'src/core/lib/surface/server.c',
-        'src/core/lib/surface/validate_metadata.c',
-        'src/core/lib/surface/version.c',
-        'src/core/lib/transport/bdp_estimator.c',
-        'src/core/lib/transport/byte_stream.c',
-        'src/core/lib/transport/connectivity_state.c',
-        'src/core/lib/transport/error_utils.c',
-        'src/core/lib/transport/metadata.c',
-        'src/core/lib/transport/metadata_batch.c',
-        'src/core/lib/transport/pid_controller.c',
-        'src/core/lib/transport/service_config.c',
-        'src/core/lib/transport/static_metadata.c',
-        'src/core/lib/transport/status_conversion.c',
-        'src/core/lib/transport/timeout_encoding.c',
-        'src/core/lib/transport/transport.c',
-        'src/core/lib/transport/transport_op_string.c',
-        'src/core/lib/debug/trace.c',
-        'src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c',
-        'src/core/ext/transport/chttp2/transport/bin_decoder.c',
-        'src/core/ext/transport/chttp2/transport/bin_encoder.c',
-        'src/core/ext/transport/chttp2/transport/chttp2_plugin.c',
-        'src/core/ext/transport/chttp2/transport/chttp2_transport.c',
-        'src/core/ext/transport/chttp2/transport/flow_control.c',
-        'src/core/ext/transport/chttp2/transport/frame_data.c',
-        'src/core/ext/transport/chttp2/transport/frame_goaway.c',
-        'src/core/ext/transport/chttp2/transport/frame_ping.c',
-        'src/core/ext/transport/chttp2/transport/frame_rst_stream.c',
-        'src/core/ext/transport/chttp2/transport/frame_settings.c',
-        'src/core/ext/transport/chttp2/transport/frame_window_update.c',
-        'src/core/ext/transport/chttp2/transport/hpack_encoder.c',
-        'src/core/ext/transport/chttp2/transport/hpack_parser.c',
-        'src/core/ext/transport/chttp2/transport/hpack_table.c',
-        'src/core/ext/transport/chttp2/transport/http2_settings.c',
-        'src/core/ext/transport/chttp2/transport/huffsyms.c',
-        'src/core/ext/transport/chttp2/transport/incoming_metadata.c',
-        'src/core/ext/transport/chttp2/transport/parsing.c',
-        'src/core/ext/transport/chttp2/transport/stream_lists.c',
-        'src/core/ext/transport/chttp2/transport/stream_map.c',
-        'src/core/ext/transport/chttp2/transport/varint.c',
-        'src/core/ext/transport/chttp2/transport/writing.c',
-        'src/core/ext/transport/chttp2/alpn/alpn.c',
-        'src/core/ext/filters/http/client/http_client_filter.c',
-        'src/core/ext/filters/http/http_filters_plugin.c',
-        'src/core/ext/filters/http/message_compress/message_compress_filter.c',
-        'src/core/ext/filters/http/server/http_server_filter.c',
-        'src/core/lib/http/httpcli_security_connector.c',
-        'src/core/lib/security/context/security_context.c',
-        'src/core/lib/security/credentials/composite/composite_credentials.c',
-        'src/core/lib/security/credentials/credentials.c',
-        'src/core/lib/security/credentials/credentials_metadata.c',
-        'src/core/lib/security/credentials/fake/fake_credentials.c',
-        'src/core/lib/security/credentials/google_default/credentials_generic.c',
-        'src/core/lib/security/credentials/google_default/google_default_credentials.c',
-        'src/core/lib/security/credentials/iam/iam_credentials.c',
-        'src/core/lib/security/credentials/jwt/json_token.c',
-        'src/core/lib/security/credentials/jwt/jwt_credentials.c',
-        'src/core/lib/security/credentials/jwt/jwt_verifier.c',
-        'src/core/lib/security/credentials/oauth2/oauth2_credentials.c',
-        'src/core/lib/security/credentials/plugin/plugin_credentials.c',
-        'src/core/lib/security/credentials/ssl/ssl_credentials.c',
-        'src/core/lib/security/transport/client_auth_filter.c',
-        'src/core/lib/security/transport/lb_targets_info.c',
-        'src/core/lib/security/transport/secure_endpoint.c',
-        'src/core/lib/security/transport/security_connector.c',
-        'src/core/lib/security/transport/security_handshaker.c',
-        'src/core/lib/security/transport/server_auth_filter.c',
-        'src/core/lib/security/transport/tsi_error.c',
-        'src/core/lib/security/util/json_util.c',
-        'src/core/lib/surface/init_secure.c',
-        'src/core/tsi/fake_transport_security.c',
-        'src/core/tsi/gts_transport_security.c',
-        'src/core/tsi/ssl_transport_security.c',
-        'src/core/tsi/transport_security_grpc.c',
-        'src/core/tsi/transport_security.c',
-        'src/core/tsi/transport_security_adapter.c',
-        'src/core/ext/transport/chttp2/server/chttp2_server.c',
-        'src/core/ext/transport/chttp2/client/secure/secure_channel_create.c',
-        'src/core/ext/filters/client_channel/channel_connectivity.c',
-        'src/core/ext/filters/client_channel/client_channel.c',
-        'src/core/ext/filters/client_channel/client_channel_factory.c',
-        'src/core/ext/filters/client_channel/client_channel_plugin.c',
-        'src/core/ext/filters/client_channel/connector.c',
-        'src/core/ext/filters/client_channel/http_connect_handshaker.c',
-        'src/core/ext/filters/client_channel/http_proxy.c',
-        'src/core/ext/filters/client_channel/lb_policy.c',
-        'src/core/ext/filters/client_channel/lb_policy_factory.c',
-        'src/core/ext/filters/client_channel/lb_policy_registry.c',
-        'src/core/ext/filters/client_channel/parse_address.c',
-        'src/core/ext/filters/client_channel/proxy_mapper.c',
-        'src/core/ext/filters/client_channel/proxy_mapper_registry.c',
-        'src/core/ext/filters/client_channel/resolver.c',
-        'src/core/ext/filters/client_channel/resolver_factory.c',
-        'src/core/ext/filters/client_channel/resolver_registry.c',
-        'src/core/ext/filters/client_channel/retry_throttle.c',
-        'src/core/ext/filters/client_channel/subchannel.c',
-        'src/core/ext/filters/client_channel/subchannel_index.c',
-        'src/core/ext/filters/client_channel/uri_parser.c',
-        'src/core/ext/filters/deadline/deadline_filter.c',
-        'src/core/ext/transport/chttp2/client/chttp2_connector.c',
-        'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
-        'src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c',
-        'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
-        'src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c',
-        'src/core/ext/transport/inproc/inproc_plugin.c',
-        'src/core/ext/transport/inproc/inproc_transport.c',
-        'src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c',
-        'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c',
-        'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c',
-        'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c',
-        'src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c',
+        'src/core/lib/surface/metadata_array.cc',
+        'src/core/lib/surface/server.cc',
+        'src/core/lib/surface/validate_metadata.cc',
+        'src/core/lib/surface/version.cc',
+        'src/core/lib/transport/bdp_estimator.cc',
+        'src/core/lib/transport/byte_stream.cc',
+        'src/core/lib/transport/connectivity_state.cc',
+        'src/core/lib/transport/error_utils.cc',
+        'src/core/lib/transport/metadata.cc',
+        'src/core/lib/transport/metadata_batch.cc',
+        'src/core/lib/transport/pid_controller.cc',
+        'src/core/lib/transport/service_config.cc',
+        'src/core/lib/transport/static_metadata.cc',
+        'src/core/lib/transport/status_conversion.cc',
+        'src/core/lib/transport/timeout_encoding.cc',
+        'src/core/lib/transport/transport.cc',
+        'src/core/lib/transport/transport_op_string.cc',
+        'src/core/lib/debug/trace.cc',
+        'src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc',
+        'src/core/ext/transport/chttp2/transport/bin_decoder.cc',
+        'src/core/ext/transport/chttp2/transport/bin_encoder.cc',
+        'src/core/ext/transport/chttp2/transport/chttp2_plugin.cc',
+        'src/core/ext/transport/chttp2/transport/chttp2_transport.cc',
+        'src/core/ext/transport/chttp2/transport/flow_control.cc',
+        'src/core/ext/transport/chttp2/transport/frame_data.cc',
+        'src/core/ext/transport/chttp2/transport/frame_goaway.cc',
+        'src/core/ext/transport/chttp2/transport/frame_ping.cc',
+        'src/core/ext/transport/chttp2/transport/frame_rst_stream.cc',
+        'src/core/ext/transport/chttp2/transport/frame_settings.cc',
+        'src/core/ext/transport/chttp2/transport/frame_window_update.cc',
+        'src/core/ext/transport/chttp2/transport/hpack_encoder.cc',
+        'src/core/ext/transport/chttp2/transport/hpack_parser.cc',
+        'src/core/ext/transport/chttp2/transport/hpack_table.cc',
+        'src/core/ext/transport/chttp2/transport/http2_settings.cc',
+        'src/core/ext/transport/chttp2/transport/huffsyms.cc',
+        'src/core/ext/transport/chttp2/transport/incoming_metadata.cc',
+        'src/core/ext/transport/chttp2/transport/parsing.cc',
+        'src/core/ext/transport/chttp2/transport/stream_lists.cc',
+        'src/core/ext/transport/chttp2/transport/stream_map.cc',
+        'src/core/ext/transport/chttp2/transport/varint.cc',
+        'src/core/ext/transport/chttp2/transport/writing.cc',
+        'src/core/ext/transport/chttp2/alpn/alpn.cc',
+        'src/core/ext/filters/http/client/http_client_filter.cc',
+        'src/core/ext/filters/http/http_filters_plugin.cc',
+        'src/core/ext/filters/http/message_compress/message_compress_filter.cc',
+        'src/core/ext/filters/http/server/http_server_filter.cc',
+        'src/core/lib/http/httpcli_security_connector.cc',
+        'src/core/lib/security/context/security_context.cc',
+        'src/core/lib/security/credentials/composite/composite_credentials.cc',
+        'src/core/lib/security/credentials/credentials.cc',
+        'src/core/lib/security/credentials/credentials_metadata.cc',
+        'src/core/lib/security/credentials/fake/fake_credentials.cc',
+        'src/core/lib/security/credentials/google_default/credentials_generic.cc',
+        'src/core/lib/security/credentials/google_default/google_default_credentials.cc',
+        'src/core/lib/security/credentials/iam/iam_credentials.cc',
+        'src/core/lib/security/credentials/jwt/json_token.cc',
+        'src/core/lib/security/credentials/jwt/jwt_credentials.cc',
+        'src/core/lib/security/credentials/jwt/jwt_verifier.cc',
+        'src/core/lib/security/credentials/oauth2/oauth2_credentials.cc',
+        'src/core/lib/security/credentials/plugin/plugin_credentials.cc',
+        'src/core/lib/security/credentials/ssl/ssl_credentials.cc',
+        'src/core/lib/security/transport/client_auth_filter.cc',
+        'src/core/lib/security/transport/lb_targets_info.cc',
+        'src/core/lib/security/transport/secure_endpoint.cc',
+        'src/core/lib/security/transport/security_connector.cc',
+        'src/core/lib/security/transport/security_handshaker.cc',
+        'src/core/lib/security/transport/server_auth_filter.cc',
+        'src/core/lib/security/transport/tsi_error.cc',
+        'src/core/lib/security/util/json_util.cc',
+        'src/core/lib/surface/init_secure.cc',
+        'src/core/tsi/fake_transport_security.cc',
+        'src/core/tsi/gts_transport_security.cc',
+        'src/core/tsi/ssl_transport_security.cc',
+        'src/core/tsi/transport_security_grpc.cc',
+        'src/core/tsi/transport_security.cc',
+        'src/core/tsi/transport_security_adapter.cc',
+        'src/core/ext/transport/chttp2/server/chttp2_server.cc',
+        'src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc',
+        'src/core/ext/filters/client_channel/channel_connectivity.cc',
+        'src/core/ext/filters/client_channel/client_channel.cc',
+        'src/core/ext/filters/client_channel/client_channel_factory.cc',
+        'src/core/ext/filters/client_channel/client_channel_plugin.cc',
+        'src/core/ext/filters/client_channel/connector.cc',
+        'src/core/ext/filters/client_channel/http_connect_handshaker.cc',
+        'src/core/ext/filters/client_channel/http_proxy.cc',
+        'src/core/ext/filters/client_channel/lb_policy.cc',
+        'src/core/ext/filters/client_channel/lb_policy_factory.cc',
+        'src/core/ext/filters/client_channel/lb_policy_registry.cc',
+        'src/core/ext/filters/client_channel/parse_address.cc',
+        'src/core/ext/filters/client_channel/proxy_mapper.cc',
+        'src/core/ext/filters/client_channel/proxy_mapper_registry.cc',
+        'src/core/ext/filters/client_channel/resolver.cc',
+        'src/core/ext/filters/client_channel/resolver_factory.cc',
+        'src/core/ext/filters/client_channel/resolver_registry.cc',
+        'src/core/ext/filters/client_channel/retry_throttle.cc',
+        'src/core/ext/filters/client_channel/subchannel.cc',
+        'src/core/ext/filters/client_channel/subchannel_index.cc',
+        'src/core/ext/filters/client_channel/uri_parser.cc',
+        'src/core/ext/filters/deadline/deadline_filter.cc',
+        'src/core/ext/transport/chttp2/client/chttp2_connector.cc',
+        'src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc',
+        'src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc',
+        'src/core/ext/transport/chttp2/client/insecure/channel_create.cc',
+        'src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc',
+        'src/core/ext/transport/inproc/inproc_plugin.cc',
+        'src/core/ext/transport/inproc/inproc_transport.cc',
+        'src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc',
+        'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc',
+        'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc',
+        'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc',
+        'src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc',
         'src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c',
         'third_party/nanopb/pb_common.c',
         'third_party/nanopb/pb_decode.c',
         'third_party/nanopb/pb_encode.c',
-        'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c',
-        'src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c',
-        'src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c',
-        'src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c',
-        'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c',
-        'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c',
-        'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c',
-        'src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c',
-        'src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c',
-        'src/core/ext/filters/load_reporting/server_load_reporting_filter.c',
-        'src/core/ext/filters/load_reporting/server_load_reporting_plugin.c',
-        'src/core/ext/census/base_resources.c',
-        'src/core/ext/census/context.c',
+        'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc',
+        'src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc',
+        'src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc',
+        'src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc',
+        'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc',
+        'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc',
+        'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc',
+        'src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc',
+        'src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc',
+        'src/core/ext/filters/load_reporting/server_load_reporting_filter.cc',
+        'src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc',
+        'src/core/ext/census/base_resources.cc',
+        'src/core/ext/census/context.cc',
         'src/core/ext/census/gen/census.pb.c',
         'src/core/ext/census/gen/trace_context.pb.c',
-        'src/core/ext/census/grpc_context.c',
-        'src/core/ext/census/grpc_filter.c',
-        'src/core/ext/census/grpc_plugin.c',
-        'src/core/ext/census/initialize.c',
-        'src/core/ext/census/intrusive_hash_map.c',
-        'src/core/ext/census/mlog.c',
-        'src/core/ext/census/operation.c',
-        'src/core/ext/census/placeholders.c',
-        'src/core/ext/census/resource.c',
-        'src/core/ext/census/trace_context.c',
-        'src/core/ext/census/tracing.c',
-        'src/core/ext/filters/max_age/max_age_filter.c',
-        'src/core/ext/filters/message_size/message_size_filter.c',
-        'src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c',
-        'src/core/ext/filters/workarounds/workaround_utils.c',
-        'src/core/plugin_registry/grpc_plugin_registry.c',
+        'src/core/ext/census/grpc_context.cc',
+        'src/core/ext/census/grpc_filter.cc',
+        'src/core/ext/census/grpc_plugin.cc',
+        'src/core/ext/census/initialize.cc',
+        'src/core/ext/census/intrusive_hash_map.cc',
+        'src/core/ext/census/mlog.cc',
+        'src/core/ext/census/operation.cc',
+        'src/core/ext/census/placeholders.cc',
+        'src/core/ext/census/resource.cc',
+        'src/core/ext/census/trace_context.cc',
+        'src/core/ext/census/tracing.cc',
+        'src/core/ext/filters/max_age/max_age_filter.cc',
+        'src/core/ext/filters/message_size/message_size_filter.cc',
+        'src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc',
+        'src/core/ext/filters/workarounds/workaround_utils.cc',
+        'src/core/plugin_registry/grpc_plugin_registry.cc',
       ],
     },
     {
@@ -509,7 +510,7 @@
         'test/core/end2end/data/server1_key.c',
         'test/core/end2end/data/test_root_cert.c',
         'test/core/security/oauth2_utils.c',
-        'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c',
+        'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc',
         'test/core/end2end/cq_verifier.c',
         'test/core/end2end/fixtures/http_proxy_fixture.c',
         'test/core/end2end/fixtures/proxy.c',
@@ -524,186 +525,186 @@
         'test/core/util/port_server_client.c',
         'test/core/util/slice_splitter.c',
         'test/core/util/trickle_endpoint.c',
-        'src/core/lib/channel/channel_args.c',
-        'src/core/lib/channel/channel_stack.c',
-        'src/core/lib/channel/channel_stack_builder.c',
-        'src/core/lib/channel/connected_channel.c',
-        'src/core/lib/channel/handshaker.c',
-        'src/core/lib/channel/handshaker_factory.c',
-        'src/core/lib/channel/handshaker_registry.c',
-        'src/core/lib/compression/compression.c',
-        'src/core/lib/compression/message_compress.c',
-        'src/core/lib/compression/stream_compression.c',
-        'src/core/lib/compression/stream_compression_gzip.c',
-        'src/core/lib/compression/stream_compression_identity.c',
-        'src/core/lib/debug/stats.c',
-        'src/core/lib/debug/stats_data.c',
-        'src/core/lib/http/format_request.c',
-        'src/core/lib/http/httpcli.c',
-        'src/core/lib/http/parser.c',
-        'src/core/lib/iomgr/call_combiner.c',
-        'src/core/lib/iomgr/closure.c',
-        'src/core/lib/iomgr/combiner.c',
-        'src/core/lib/iomgr/endpoint.c',
-        'src/core/lib/iomgr/endpoint_pair_posix.c',
-        'src/core/lib/iomgr/endpoint_pair_uv.c',
-        'src/core/lib/iomgr/endpoint_pair_windows.c',
-        'src/core/lib/iomgr/error.c',
-        'src/core/lib/iomgr/ev_epoll1_linux.c',
-        'src/core/lib/iomgr/ev_epollex_linux.c',
-        'src/core/lib/iomgr/ev_epollsig_linux.c',
-        'src/core/lib/iomgr/ev_poll_posix.c',
-        'src/core/lib/iomgr/ev_posix.c',
-        'src/core/lib/iomgr/ev_windows.c',
-        'src/core/lib/iomgr/exec_ctx.c',
-        'src/core/lib/iomgr/executor.c',
-        'src/core/lib/iomgr/gethostname_fallback.c',
-        'src/core/lib/iomgr/gethostname_host_name_max.c',
-        'src/core/lib/iomgr/gethostname_sysconf.c',
-        'src/core/lib/iomgr/iocp_windows.c',
-        'src/core/lib/iomgr/iomgr.c',
-        'src/core/lib/iomgr/iomgr_posix.c',
-        'src/core/lib/iomgr/iomgr_uv.c',
-        'src/core/lib/iomgr/iomgr_windows.c',
-        'src/core/lib/iomgr/is_epollexclusive_available.c',
-        'src/core/lib/iomgr/load_file.c',
-        'src/core/lib/iomgr/lockfree_event.c',
-        'src/core/lib/iomgr/network_status_tracker.c',
-        'src/core/lib/iomgr/polling_entity.c',
-        'src/core/lib/iomgr/pollset_set_uv.c',
-        'src/core/lib/iomgr/pollset_set_windows.c',
-        'src/core/lib/iomgr/pollset_uv.c',
-        'src/core/lib/iomgr/pollset_windows.c',
-        'src/core/lib/iomgr/resolve_address_posix.c',
-        'src/core/lib/iomgr/resolve_address_uv.c',
-        'src/core/lib/iomgr/resolve_address_windows.c',
-        'src/core/lib/iomgr/resource_quota.c',
-        'src/core/lib/iomgr/sockaddr_utils.c',
-        'src/core/lib/iomgr/socket_factory_posix.c',
-        'src/core/lib/iomgr/socket_mutator.c',
-        'src/core/lib/iomgr/socket_utils_common_posix.c',
-        'src/core/lib/iomgr/socket_utils_linux.c',
-        'src/core/lib/iomgr/socket_utils_posix.c',
-        'src/core/lib/iomgr/socket_utils_uv.c',
-        'src/core/lib/iomgr/socket_utils_windows.c',
-        'src/core/lib/iomgr/socket_windows.c',
-        'src/core/lib/iomgr/tcp_client_posix.c',
-        'src/core/lib/iomgr/tcp_client_uv.c',
-        'src/core/lib/iomgr/tcp_client_windows.c',
-        'src/core/lib/iomgr/tcp_posix.c',
-        'src/core/lib/iomgr/tcp_server_posix.c',
-        'src/core/lib/iomgr/tcp_server_utils_posix_common.c',
-        'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c',
-        'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c',
-        'src/core/lib/iomgr/tcp_server_uv.c',
-        'src/core/lib/iomgr/tcp_server_windows.c',
-        'src/core/lib/iomgr/tcp_uv.c',
-        'src/core/lib/iomgr/tcp_windows.c',
-        'src/core/lib/iomgr/time_averaged_stats.c',
-        'src/core/lib/iomgr/timer_generic.c',
-        'src/core/lib/iomgr/timer_heap.c',
-        'src/core/lib/iomgr/timer_manager.c',
-        'src/core/lib/iomgr/timer_uv.c',
-        'src/core/lib/iomgr/udp_server.c',
-        'src/core/lib/iomgr/unix_sockets_posix.c',
-        'src/core/lib/iomgr/unix_sockets_posix_noop.c',
-        'src/core/lib/iomgr/wakeup_fd_cv.c',
-        'src/core/lib/iomgr/wakeup_fd_eventfd.c',
-        'src/core/lib/iomgr/wakeup_fd_nospecial.c',
-        'src/core/lib/iomgr/wakeup_fd_pipe.c',
-        'src/core/lib/iomgr/wakeup_fd_posix.c',
-        'src/core/lib/json/json.c',
-        'src/core/lib/json/json_reader.c',
-        'src/core/lib/json/json_string.c',
-        'src/core/lib/json/json_writer.c',
-        'src/core/lib/slice/b64.c',
-        'src/core/lib/slice/percent_encoding.c',
-        'src/core/lib/slice/slice.c',
-        'src/core/lib/slice/slice_buffer.c',
-        'src/core/lib/slice/slice_hash_table.c',
-        'src/core/lib/slice/slice_intern.c',
-        'src/core/lib/slice/slice_string_helpers.c',
-        'src/core/lib/surface/alarm.c',
-        'src/core/lib/surface/api_trace.c',
-        'src/core/lib/surface/byte_buffer.c',
-        'src/core/lib/surface/byte_buffer_reader.c',
-        'src/core/lib/surface/call.c',
-        'src/core/lib/surface/call_details.c',
-        'src/core/lib/surface/call_log_batch.c',
-        'src/core/lib/surface/channel.c',
-        'src/core/lib/surface/channel_init.c',
-        'src/core/lib/surface/channel_ping.c',
-        'src/core/lib/surface/channel_stack_type.c',
-        'src/core/lib/surface/completion_queue.c',
-        'src/core/lib/surface/completion_queue_factory.c',
-        'src/core/lib/surface/event_string.c',
+        'src/core/lib/channel/channel_args.cc',
+        'src/core/lib/channel/channel_stack.cc',
+        'src/core/lib/channel/channel_stack_builder.cc',
+        'src/core/lib/channel/connected_channel.cc',
+        'src/core/lib/channel/handshaker.cc',
+        'src/core/lib/channel/handshaker_factory.cc',
+        'src/core/lib/channel/handshaker_registry.cc',
+        'src/core/lib/compression/compression.cc',
+        'src/core/lib/compression/message_compress.cc',
+        'src/core/lib/compression/stream_compression.cc',
+        'src/core/lib/compression/stream_compression_gzip.cc',
+        'src/core/lib/compression/stream_compression_identity.cc',
+        'src/core/lib/debug/stats.cc',
+        'src/core/lib/debug/stats_data.cc',
+        'src/core/lib/http/format_request.cc',
+        'src/core/lib/http/httpcli.cc',
+        'src/core/lib/http/parser.cc',
+        'src/core/lib/iomgr/call_combiner.cc',
+        'src/core/lib/iomgr/closure.cc',
+        'src/core/lib/iomgr/combiner.cc',
+        'src/core/lib/iomgr/endpoint.cc',
+        'src/core/lib/iomgr/endpoint_pair_posix.cc',
+        'src/core/lib/iomgr/endpoint_pair_uv.cc',
+        'src/core/lib/iomgr/endpoint_pair_windows.cc',
+        'src/core/lib/iomgr/error.cc',
+        'src/core/lib/iomgr/ev_epoll1_linux.cc',
+        'src/core/lib/iomgr/ev_epollex_linux.cc',
+        'src/core/lib/iomgr/ev_epollsig_linux.cc',
+        'src/core/lib/iomgr/ev_poll_posix.cc',
+        'src/core/lib/iomgr/ev_posix.cc',
+        'src/core/lib/iomgr/ev_windows.cc',
+        'src/core/lib/iomgr/exec_ctx.cc',
+        'src/core/lib/iomgr/executor.cc',
+        'src/core/lib/iomgr/gethostname_fallback.cc',
+        'src/core/lib/iomgr/gethostname_host_name_max.cc',
+        'src/core/lib/iomgr/gethostname_sysconf.cc',
+        'src/core/lib/iomgr/iocp_windows.cc',
+        'src/core/lib/iomgr/iomgr.cc',
+        'src/core/lib/iomgr/iomgr_posix.cc',
+        'src/core/lib/iomgr/iomgr_uv.cc',
+        'src/core/lib/iomgr/iomgr_windows.cc',
+        'src/core/lib/iomgr/is_epollexclusive_available.cc',
+        'src/core/lib/iomgr/load_file.cc',
+        'src/core/lib/iomgr/lockfree_event.cc',
+        'src/core/lib/iomgr/network_status_tracker.cc',
+        'src/core/lib/iomgr/polling_entity.cc',
+        'src/core/lib/iomgr/pollset_set_uv.cc',
+        'src/core/lib/iomgr/pollset_set_windows.cc',
+        'src/core/lib/iomgr/pollset_uv.cc',
+        'src/core/lib/iomgr/pollset_windows.cc',
+        'src/core/lib/iomgr/resolve_address_posix.cc',
+        'src/core/lib/iomgr/resolve_address_uv.cc',
+        'src/core/lib/iomgr/resolve_address_windows.cc',
+        'src/core/lib/iomgr/resource_quota.cc',
+        'src/core/lib/iomgr/sockaddr_utils.cc',
+        'src/core/lib/iomgr/socket_factory_posix.cc',
+        'src/core/lib/iomgr/socket_mutator.cc',
+        'src/core/lib/iomgr/socket_utils_common_posix.cc',
+        'src/core/lib/iomgr/socket_utils_linux.cc',
+        'src/core/lib/iomgr/socket_utils_posix.cc',
+        'src/core/lib/iomgr/socket_utils_uv.cc',
+        'src/core/lib/iomgr/socket_utils_windows.cc',
+        'src/core/lib/iomgr/socket_windows.cc',
+        'src/core/lib/iomgr/tcp_client_posix.cc',
+        'src/core/lib/iomgr/tcp_client_uv.cc',
+        'src/core/lib/iomgr/tcp_client_windows.cc',
+        'src/core/lib/iomgr/tcp_posix.cc',
+        'src/core/lib/iomgr/tcp_server_posix.cc',
+        'src/core/lib/iomgr/tcp_server_utils_posix_common.cc',
+        'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc',
+        'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc',
+        'src/core/lib/iomgr/tcp_server_uv.cc',
+        'src/core/lib/iomgr/tcp_server_windows.cc',
+        'src/core/lib/iomgr/tcp_uv.cc',
+        'src/core/lib/iomgr/tcp_windows.cc',
+        'src/core/lib/iomgr/time_averaged_stats.cc',
+        'src/core/lib/iomgr/timer_generic.cc',
+        'src/core/lib/iomgr/timer_heap.cc',
+        'src/core/lib/iomgr/timer_manager.cc',
+        'src/core/lib/iomgr/timer_uv.cc',
+        'src/core/lib/iomgr/udp_server.cc',
+        'src/core/lib/iomgr/unix_sockets_posix.cc',
+        'src/core/lib/iomgr/unix_sockets_posix_noop.cc',
+        'src/core/lib/iomgr/wakeup_fd_cv.cc',
+        'src/core/lib/iomgr/wakeup_fd_eventfd.cc',
+        'src/core/lib/iomgr/wakeup_fd_nospecial.cc',
+        'src/core/lib/iomgr/wakeup_fd_pipe.cc',
+        'src/core/lib/iomgr/wakeup_fd_posix.cc',
+        'src/core/lib/json/json.cc',
+        'src/core/lib/json/json_reader.cc',
+        'src/core/lib/json/json_string.cc',
+        'src/core/lib/json/json_writer.cc',
+        'src/core/lib/slice/b64.cc',
+        'src/core/lib/slice/percent_encoding.cc',
+        'src/core/lib/slice/slice.cc',
+        'src/core/lib/slice/slice_buffer.cc',
+        'src/core/lib/slice/slice_hash_table.cc',
+        'src/core/lib/slice/slice_intern.cc',
+        'src/core/lib/slice/slice_string_helpers.cc',
+        'src/core/lib/surface/alarm.cc',
+        'src/core/lib/surface/api_trace.cc',
+        'src/core/lib/surface/byte_buffer.cc',
+        'src/core/lib/surface/byte_buffer_reader.cc',
+        'src/core/lib/surface/call.cc',
+        'src/core/lib/surface/call_details.cc',
+        'src/core/lib/surface/call_log_batch.cc',
+        'src/core/lib/surface/channel.cc',
+        'src/core/lib/surface/channel_init.cc',
+        'src/core/lib/surface/channel_ping.cc',
+        'src/core/lib/surface/channel_stack_type.cc',
+        'src/core/lib/surface/completion_queue.cc',
+        'src/core/lib/surface/completion_queue_factory.cc',
+        'src/core/lib/surface/event_string.cc',
         'src/core/lib/surface/lame_client.cc',
-        'src/core/lib/surface/metadata_array.c',
-        'src/core/lib/surface/server.c',
-        'src/core/lib/surface/validate_metadata.c',
-        'src/core/lib/surface/version.c',
-        'src/core/lib/transport/bdp_estimator.c',
-        'src/core/lib/transport/byte_stream.c',
-        'src/core/lib/transport/connectivity_state.c',
-        'src/core/lib/transport/error_utils.c',
-        'src/core/lib/transport/metadata.c',
-        'src/core/lib/transport/metadata_batch.c',
-        'src/core/lib/transport/pid_controller.c',
-        'src/core/lib/transport/service_config.c',
-        'src/core/lib/transport/static_metadata.c',
-        'src/core/lib/transport/status_conversion.c',
-        'src/core/lib/transport/timeout_encoding.c',
-        'src/core/lib/transport/transport.c',
-        'src/core/lib/transport/transport_op_string.c',
-        'src/core/lib/debug/trace.c',
-        'src/core/ext/filters/client_channel/channel_connectivity.c',
-        'src/core/ext/filters/client_channel/client_channel.c',
-        'src/core/ext/filters/client_channel/client_channel_factory.c',
-        'src/core/ext/filters/client_channel/client_channel_plugin.c',
-        'src/core/ext/filters/client_channel/connector.c',
-        'src/core/ext/filters/client_channel/http_connect_handshaker.c',
-        'src/core/ext/filters/client_channel/http_proxy.c',
-        'src/core/ext/filters/client_channel/lb_policy.c',
-        'src/core/ext/filters/client_channel/lb_policy_factory.c',
-        'src/core/ext/filters/client_channel/lb_policy_registry.c',
-        'src/core/ext/filters/client_channel/parse_address.c',
-        'src/core/ext/filters/client_channel/proxy_mapper.c',
-        'src/core/ext/filters/client_channel/proxy_mapper_registry.c',
-        'src/core/ext/filters/client_channel/resolver.c',
-        'src/core/ext/filters/client_channel/resolver_factory.c',
-        'src/core/ext/filters/client_channel/resolver_registry.c',
-        'src/core/ext/filters/client_channel/retry_throttle.c',
-        'src/core/ext/filters/client_channel/subchannel.c',
-        'src/core/ext/filters/client_channel/subchannel_index.c',
-        'src/core/ext/filters/client_channel/uri_parser.c',
-        'src/core/ext/filters/deadline/deadline_filter.c',
-        'src/core/ext/transport/chttp2/transport/bin_decoder.c',
-        'src/core/ext/transport/chttp2/transport/bin_encoder.c',
-        'src/core/ext/transport/chttp2/transport/chttp2_plugin.c',
-        'src/core/ext/transport/chttp2/transport/chttp2_transport.c',
-        'src/core/ext/transport/chttp2/transport/flow_control.c',
-        'src/core/ext/transport/chttp2/transport/frame_data.c',
-        'src/core/ext/transport/chttp2/transport/frame_goaway.c',
-        'src/core/ext/transport/chttp2/transport/frame_ping.c',
-        'src/core/ext/transport/chttp2/transport/frame_rst_stream.c',
-        'src/core/ext/transport/chttp2/transport/frame_settings.c',
-        'src/core/ext/transport/chttp2/transport/frame_window_update.c',
-        'src/core/ext/transport/chttp2/transport/hpack_encoder.c',
-        'src/core/ext/transport/chttp2/transport/hpack_parser.c',
-        'src/core/ext/transport/chttp2/transport/hpack_table.c',
-        'src/core/ext/transport/chttp2/transport/http2_settings.c',
-        'src/core/ext/transport/chttp2/transport/huffsyms.c',
-        'src/core/ext/transport/chttp2/transport/incoming_metadata.c',
-        'src/core/ext/transport/chttp2/transport/parsing.c',
-        'src/core/ext/transport/chttp2/transport/stream_lists.c',
-        'src/core/ext/transport/chttp2/transport/stream_map.c',
-        'src/core/ext/transport/chttp2/transport/varint.c',
-        'src/core/ext/transport/chttp2/transport/writing.c',
-        'src/core/ext/transport/chttp2/alpn/alpn.c',
-        'src/core/ext/filters/http/client/http_client_filter.c',
-        'src/core/ext/filters/http/http_filters_plugin.c',
-        'src/core/ext/filters/http/message_compress/message_compress_filter.c',
-        'src/core/ext/filters/http/server/http_server_filter.c',
+        'src/core/lib/surface/metadata_array.cc',
+        'src/core/lib/surface/server.cc',
+        'src/core/lib/surface/validate_metadata.cc',
+        'src/core/lib/surface/version.cc',
+        'src/core/lib/transport/bdp_estimator.cc',
+        'src/core/lib/transport/byte_stream.cc',
+        'src/core/lib/transport/connectivity_state.cc',
+        'src/core/lib/transport/error_utils.cc',
+        'src/core/lib/transport/metadata.cc',
+        'src/core/lib/transport/metadata_batch.cc',
+        'src/core/lib/transport/pid_controller.cc',
+        'src/core/lib/transport/service_config.cc',
+        'src/core/lib/transport/static_metadata.cc',
+        'src/core/lib/transport/status_conversion.cc',
+        'src/core/lib/transport/timeout_encoding.cc',
+        'src/core/lib/transport/transport.cc',
+        'src/core/lib/transport/transport_op_string.cc',
+        'src/core/lib/debug/trace.cc',
+        'src/core/ext/filters/client_channel/channel_connectivity.cc',
+        'src/core/ext/filters/client_channel/client_channel.cc',
+        'src/core/ext/filters/client_channel/client_channel_factory.cc',
+        'src/core/ext/filters/client_channel/client_channel_plugin.cc',
+        'src/core/ext/filters/client_channel/connector.cc',
+        'src/core/ext/filters/client_channel/http_connect_handshaker.cc',
+        'src/core/ext/filters/client_channel/http_proxy.cc',
+        'src/core/ext/filters/client_channel/lb_policy.cc',
+        'src/core/ext/filters/client_channel/lb_policy_factory.cc',
+        'src/core/ext/filters/client_channel/lb_policy_registry.cc',
+        'src/core/ext/filters/client_channel/parse_address.cc',
+        'src/core/ext/filters/client_channel/proxy_mapper.cc',
+        'src/core/ext/filters/client_channel/proxy_mapper_registry.cc',
+        'src/core/ext/filters/client_channel/resolver.cc',
+        'src/core/ext/filters/client_channel/resolver_factory.cc',
+        'src/core/ext/filters/client_channel/resolver_registry.cc',
+        'src/core/ext/filters/client_channel/retry_throttle.cc',
+        'src/core/ext/filters/client_channel/subchannel.cc',
+        'src/core/ext/filters/client_channel/subchannel_index.cc',
+        'src/core/ext/filters/client_channel/uri_parser.cc',
+        'src/core/ext/filters/deadline/deadline_filter.cc',
+        'src/core/ext/transport/chttp2/transport/bin_decoder.cc',
+        'src/core/ext/transport/chttp2/transport/bin_encoder.cc',
+        'src/core/ext/transport/chttp2/transport/chttp2_plugin.cc',
+        'src/core/ext/transport/chttp2/transport/chttp2_transport.cc',
+        'src/core/ext/transport/chttp2/transport/flow_control.cc',
+        'src/core/ext/transport/chttp2/transport/frame_data.cc',
+        'src/core/ext/transport/chttp2/transport/frame_goaway.cc',
+        'src/core/ext/transport/chttp2/transport/frame_ping.cc',
+        'src/core/ext/transport/chttp2/transport/frame_rst_stream.cc',
+        'src/core/ext/transport/chttp2/transport/frame_settings.cc',
+        'src/core/ext/transport/chttp2/transport/frame_window_update.cc',
+        'src/core/ext/transport/chttp2/transport/hpack_encoder.cc',
+        'src/core/ext/transport/chttp2/transport/hpack_parser.cc',
+        'src/core/ext/transport/chttp2/transport/hpack_table.cc',
+        'src/core/ext/transport/chttp2/transport/http2_settings.cc',
+        'src/core/ext/transport/chttp2/transport/huffsyms.cc',
+        'src/core/ext/transport/chttp2/transport/incoming_metadata.cc',
+        'src/core/ext/transport/chttp2/transport/parsing.cc',
+        'src/core/ext/transport/chttp2/transport/stream_lists.cc',
+        'src/core/ext/transport/chttp2/transport/stream_map.cc',
+        'src/core/ext/transport/chttp2/transport/varint.cc',
+        'src/core/ext/transport/chttp2/transport/writing.cc',
+        'src/core/ext/transport/chttp2/alpn/alpn.cc',
+        'src/core/ext/filters/http/client/http_client_filter.cc',
+        'src/core/ext/filters/http/http_filters_plugin.cc',
+        'src/core/ext/filters/http/message_compress/message_compress_filter.cc',
+        'src/core/ext/filters/http/server/http_server_filter.cc',
       ],
     },
     {
@@ -715,7 +716,7 @@
         'grpc_unsecure',
       ],
       'sources': [
-        'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c',
+        'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc',
         'test/core/end2end/cq_verifier.c',
         'test/core/end2end/fixtures/http_proxy_fixture.c',
         'test/core/end2end/fixtures/proxy.c',
@@ -730,186 +731,186 @@
         'test/core/util/port_server_client.c',
         'test/core/util/slice_splitter.c',
         'test/core/util/trickle_endpoint.c',
-        'src/core/lib/channel/channel_args.c',
-        'src/core/lib/channel/channel_stack.c',
-        'src/core/lib/channel/channel_stack_builder.c',
-        'src/core/lib/channel/connected_channel.c',
-        'src/core/lib/channel/handshaker.c',
-        'src/core/lib/channel/handshaker_factory.c',
-        'src/core/lib/channel/handshaker_registry.c',
-        'src/core/lib/compression/compression.c',
-        'src/core/lib/compression/message_compress.c',
-        'src/core/lib/compression/stream_compression.c',
-        'src/core/lib/compression/stream_compression_gzip.c',
-        'src/core/lib/compression/stream_compression_identity.c',
-        'src/core/lib/debug/stats.c',
-        'src/core/lib/debug/stats_data.c',
-        'src/core/lib/http/format_request.c',
-        'src/core/lib/http/httpcli.c',
-        'src/core/lib/http/parser.c',
-        'src/core/lib/iomgr/call_combiner.c',
-        'src/core/lib/iomgr/closure.c',
-        'src/core/lib/iomgr/combiner.c',
-        'src/core/lib/iomgr/endpoint.c',
-        'src/core/lib/iomgr/endpoint_pair_posix.c',
-        'src/core/lib/iomgr/endpoint_pair_uv.c',
-        'src/core/lib/iomgr/endpoint_pair_windows.c',
-        'src/core/lib/iomgr/error.c',
-        'src/core/lib/iomgr/ev_epoll1_linux.c',
-        'src/core/lib/iomgr/ev_epollex_linux.c',
-        'src/core/lib/iomgr/ev_epollsig_linux.c',
-        'src/core/lib/iomgr/ev_poll_posix.c',
-        'src/core/lib/iomgr/ev_posix.c',
-        'src/core/lib/iomgr/ev_windows.c',
-        'src/core/lib/iomgr/exec_ctx.c',
-        'src/core/lib/iomgr/executor.c',
-        'src/core/lib/iomgr/gethostname_fallback.c',
-        'src/core/lib/iomgr/gethostname_host_name_max.c',
-        'src/core/lib/iomgr/gethostname_sysconf.c',
-        'src/core/lib/iomgr/iocp_windows.c',
-        'src/core/lib/iomgr/iomgr.c',
-        'src/core/lib/iomgr/iomgr_posix.c',
-        'src/core/lib/iomgr/iomgr_uv.c',
-        'src/core/lib/iomgr/iomgr_windows.c',
-        'src/core/lib/iomgr/is_epollexclusive_available.c',
-        'src/core/lib/iomgr/load_file.c',
-        'src/core/lib/iomgr/lockfree_event.c',
-        'src/core/lib/iomgr/network_status_tracker.c',
-        'src/core/lib/iomgr/polling_entity.c',
-        'src/core/lib/iomgr/pollset_set_uv.c',
-        'src/core/lib/iomgr/pollset_set_windows.c',
-        'src/core/lib/iomgr/pollset_uv.c',
-        'src/core/lib/iomgr/pollset_windows.c',
-        'src/core/lib/iomgr/resolve_address_posix.c',
-        'src/core/lib/iomgr/resolve_address_uv.c',
-        'src/core/lib/iomgr/resolve_address_windows.c',
-        'src/core/lib/iomgr/resource_quota.c',
-        'src/core/lib/iomgr/sockaddr_utils.c',
-        'src/core/lib/iomgr/socket_factory_posix.c',
-        'src/core/lib/iomgr/socket_mutator.c',
-        'src/core/lib/iomgr/socket_utils_common_posix.c',
-        'src/core/lib/iomgr/socket_utils_linux.c',
-        'src/core/lib/iomgr/socket_utils_posix.c',
-        'src/core/lib/iomgr/socket_utils_uv.c',
-        'src/core/lib/iomgr/socket_utils_windows.c',
-        'src/core/lib/iomgr/socket_windows.c',
-        'src/core/lib/iomgr/tcp_client_posix.c',
-        'src/core/lib/iomgr/tcp_client_uv.c',
-        'src/core/lib/iomgr/tcp_client_windows.c',
-        'src/core/lib/iomgr/tcp_posix.c',
-        'src/core/lib/iomgr/tcp_server_posix.c',
-        'src/core/lib/iomgr/tcp_server_utils_posix_common.c',
-        'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c',
-        'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c',
-        'src/core/lib/iomgr/tcp_server_uv.c',
-        'src/core/lib/iomgr/tcp_server_windows.c',
-        'src/core/lib/iomgr/tcp_uv.c',
-        'src/core/lib/iomgr/tcp_windows.c',
-        'src/core/lib/iomgr/time_averaged_stats.c',
-        'src/core/lib/iomgr/timer_generic.c',
-        'src/core/lib/iomgr/timer_heap.c',
-        'src/core/lib/iomgr/timer_manager.c',
-        'src/core/lib/iomgr/timer_uv.c',
-        'src/core/lib/iomgr/udp_server.c',
-        'src/core/lib/iomgr/unix_sockets_posix.c',
-        'src/core/lib/iomgr/unix_sockets_posix_noop.c',
-        'src/core/lib/iomgr/wakeup_fd_cv.c',
-        'src/core/lib/iomgr/wakeup_fd_eventfd.c',
-        'src/core/lib/iomgr/wakeup_fd_nospecial.c',
-        'src/core/lib/iomgr/wakeup_fd_pipe.c',
-        'src/core/lib/iomgr/wakeup_fd_posix.c',
-        'src/core/lib/json/json.c',
-        'src/core/lib/json/json_reader.c',
-        'src/core/lib/json/json_string.c',
-        'src/core/lib/json/json_writer.c',
-        'src/core/lib/slice/b64.c',
-        'src/core/lib/slice/percent_encoding.c',
-        'src/core/lib/slice/slice.c',
-        'src/core/lib/slice/slice_buffer.c',
-        'src/core/lib/slice/slice_hash_table.c',
-        'src/core/lib/slice/slice_intern.c',
-        'src/core/lib/slice/slice_string_helpers.c',
-        'src/core/lib/surface/alarm.c',
-        'src/core/lib/surface/api_trace.c',
-        'src/core/lib/surface/byte_buffer.c',
-        'src/core/lib/surface/byte_buffer_reader.c',
-        'src/core/lib/surface/call.c',
-        'src/core/lib/surface/call_details.c',
-        'src/core/lib/surface/call_log_batch.c',
-        'src/core/lib/surface/channel.c',
-        'src/core/lib/surface/channel_init.c',
-        'src/core/lib/surface/channel_ping.c',
-        'src/core/lib/surface/channel_stack_type.c',
-        'src/core/lib/surface/completion_queue.c',
-        'src/core/lib/surface/completion_queue_factory.c',
-        'src/core/lib/surface/event_string.c',
+        'src/core/lib/channel/channel_args.cc',
+        'src/core/lib/channel/channel_stack.cc',
+        'src/core/lib/channel/channel_stack_builder.cc',
+        'src/core/lib/channel/connected_channel.cc',
+        'src/core/lib/channel/handshaker.cc',
+        'src/core/lib/channel/handshaker_factory.cc',
+        'src/core/lib/channel/handshaker_registry.cc',
+        'src/core/lib/compression/compression.cc',
+        'src/core/lib/compression/message_compress.cc',
+        'src/core/lib/compression/stream_compression.cc',
+        'src/core/lib/compression/stream_compression_gzip.cc',
+        'src/core/lib/compression/stream_compression_identity.cc',
+        'src/core/lib/debug/stats.cc',
+        'src/core/lib/debug/stats_data.cc',
+        'src/core/lib/http/format_request.cc',
+        'src/core/lib/http/httpcli.cc',
+        'src/core/lib/http/parser.cc',
+        'src/core/lib/iomgr/call_combiner.cc',
+        'src/core/lib/iomgr/closure.cc',
+        'src/core/lib/iomgr/combiner.cc',
+        'src/core/lib/iomgr/endpoint.cc',
+        'src/core/lib/iomgr/endpoint_pair_posix.cc',
+        'src/core/lib/iomgr/endpoint_pair_uv.cc',
+        'src/core/lib/iomgr/endpoint_pair_windows.cc',
+        'src/core/lib/iomgr/error.cc',
+        'src/core/lib/iomgr/ev_epoll1_linux.cc',
+        'src/core/lib/iomgr/ev_epollex_linux.cc',
+        'src/core/lib/iomgr/ev_epollsig_linux.cc',
+        'src/core/lib/iomgr/ev_poll_posix.cc',
+        'src/core/lib/iomgr/ev_posix.cc',
+        'src/core/lib/iomgr/ev_windows.cc',
+        'src/core/lib/iomgr/exec_ctx.cc',
+        'src/core/lib/iomgr/executor.cc',
+        'src/core/lib/iomgr/gethostname_fallback.cc',
+        'src/core/lib/iomgr/gethostname_host_name_max.cc',
+        'src/core/lib/iomgr/gethostname_sysconf.cc',
+        'src/core/lib/iomgr/iocp_windows.cc',
+        'src/core/lib/iomgr/iomgr.cc',
+        'src/core/lib/iomgr/iomgr_posix.cc',
+        'src/core/lib/iomgr/iomgr_uv.cc',
+        'src/core/lib/iomgr/iomgr_windows.cc',
+        'src/core/lib/iomgr/is_epollexclusive_available.cc',
+        'src/core/lib/iomgr/load_file.cc',
+        'src/core/lib/iomgr/lockfree_event.cc',
+        'src/core/lib/iomgr/network_status_tracker.cc',
+        'src/core/lib/iomgr/polling_entity.cc',
+        'src/core/lib/iomgr/pollset_set_uv.cc',
+        'src/core/lib/iomgr/pollset_set_windows.cc',
+        'src/core/lib/iomgr/pollset_uv.cc',
+        'src/core/lib/iomgr/pollset_windows.cc',
+        'src/core/lib/iomgr/resolve_address_posix.cc',
+        'src/core/lib/iomgr/resolve_address_uv.cc',
+        'src/core/lib/iomgr/resolve_address_windows.cc',
+        'src/core/lib/iomgr/resource_quota.cc',
+        'src/core/lib/iomgr/sockaddr_utils.cc',
+        'src/core/lib/iomgr/socket_factory_posix.cc',
+        'src/core/lib/iomgr/socket_mutator.cc',
+        'src/core/lib/iomgr/socket_utils_common_posix.cc',
+        'src/core/lib/iomgr/socket_utils_linux.cc',
+        'src/core/lib/iomgr/socket_utils_posix.cc',
+        'src/core/lib/iomgr/socket_utils_uv.cc',
+        'src/core/lib/iomgr/socket_utils_windows.cc',
+        'src/core/lib/iomgr/socket_windows.cc',
+        'src/core/lib/iomgr/tcp_client_posix.cc',
+        'src/core/lib/iomgr/tcp_client_uv.cc',
+        'src/core/lib/iomgr/tcp_client_windows.cc',
+        'src/core/lib/iomgr/tcp_posix.cc',
+        'src/core/lib/iomgr/tcp_server_posix.cc',
+        'src/core/lib/iomgr/tcp_server_utils_posix_common.cc',
+        'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc',
+        'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc',
+        'src/core/lib/iomgr/tcp_server_uv.cc',
+        'src/core/lib/iomgr/tcp_server_windows.cc',
+        'src/core/lib/iomgr/tcp_uv.cc',
+        'src/core/lib/iomgr/tcp_windows.cc',
+        'src/core/lib/iomgr/time_averaged_stats.cc',
+        'src/core/lib/iomgr/timer_generic.cc',
+        'src/core/lib/iomgr/timer_heap.cc',
+        'src/core/lib/iomgr/timer_manager.cc',
+        'src/core/lib/iomgr/timer_uv.cc',
+        'src/core/lib/iomgr/udp_server.cc',
+        'src/core/lib/iomgr/unix_sockets_posix.cc',
+        'src/core/lib/iomgr/unix_sockets_posix_noop.cc',
+        'src/core/lib/iomgr/wakeup_fd_cv.cc',
+        'src/core/lib/iomgr/wakeup_fd_eventfd.cc',
+        'src/core/lib/iomgr/wakeup_fd_nospecial.cc',
+        'src/core/lib/iomgr/wakeup_fd_pipe.cc',
+        'src/core/lib/iomgr/wakeup_fd_posix.cc',
+        'src/core/lib/json/json.cc',
+        'src/core/lib/json/json_reader.cc',
+        'src/core/lib/json/json_string.cc',
+        'src/core/lib/json/json_writer.cc',
+        'src/core/lib/slice/b64.cc',
+        'src/core/lib/slice/percent_encoding.cc',
+        'src/core/lib/slice/slice.cc',
+        'src/core/lib/slice/slice_buffer.cc',
+        'src/core/lib/slice/slice_hash_table.cc',
+        'src/core/lib/slice/slice_intern.cc',
+        'src/core/lib/slice/slice_string_helpers.cc',
+        'src/core/lib/surface/alarm.cc',
+        'src/core/lib/surface/api_trace.cc',
+        'src/core/lib/surface/byte_buffer.cc',
+        'src/core/lib/surface/byte_buffer_reader.cc',
+        'src/core/lib/surface/call.cc',
+        'src/core/lib/surface/call_details.cc',
+        'src/core/lib/surface/call_log_batch.cc',
+        'src/core/lib/surface/channel.cc',
+        'src/core/lib/surface/channel_init.cc',
+        'src/core/lib/surface/channel_ping.cc',
+        'src/core/lib/surface/channel_stack_type.cc',
+        'src/core/lib/surface/completion_queue.cc',
+        'src/core/lib/surface/completion_queue_factory.cc',
+        'src/core/lib/surface/event_string.cc',
         'src/core/lib/surface/lame_client.cc',
-        'src/core/lib/surface/metadata_array.c',
-        'src/core/lib/surface/server.c',
-        'src/core/lib/surface/validate_metadata.c',
-        'src/core/lib/surface/version.c',
-        'src/core/lib/transport/bdp_estimator.c',
-        'src/core/lib/transport/byte_stream.c',
-        'src/core/lib/transport/connectivity_state.c',
-        'src/core/lib/transport/error_utils.c',
-        'src/core/lib/transport/metadata.c',
-        'src/core/lib/transport/metadata_batch.c',
-        'src/core/lib/transport/pid_controller.c',
-        'src/core/lib/transport/service_config.c',
-        'src/core/lib/transport/static_metadata.c',
-        'src/core/lib/transport/status_conversion.c',
-        'src/core/lib/transport/timeout_encoding.c',
-        'src/core/lib/transport/transport.c',
-        'src/core/lib/transport/transport_op_string.c',
-        'src/core/lib/debug/trace.c',
-        'src/core/ext/filters/client_channel/channel_connectivity.c',
-        'src/core/ext/filters/client_channel/client_channel.c',
-        'src/core/ext/filters/client_channel/client_channel_factory.c',
-        'src/core/ext/filters/client_channel/client_channel_plugin.c',
-        'src/core/ext/filters/client_channel/connector.c',
-        'src/core/ext/filters/client_channel/http_connect_handshaker.c',
-        'src/core/ext/filters/client_channel/http_proxy.c',
-        'src/core/ext/filters/client_channel/lb_policy.c',
-        'src/core/ext/filters/client_channel/lb_policy_factory.c',
-        'src/core/ext/filters/client_channel/lb_policy_registry.c',
-        'src/core/ext/filters/client_channel/parse_address.c',
-        'src/core/ext/filters/client_channel/proxy_mapper.c',
-        'src/core/ext/filters/client_channel/proxy_mapper_registry.c',
-        'src/core/ext/filters/client_channel/resolver.c',
-        'src/core/ext/filters/client_channel/resolver_factory.c',
-        'src/core/ext/filters/client_channel/resolver_registry.c',
-        'src/core/ext/filters/client_channel/retry_throttle.c',
-        'src/core/ext/filters/client_channel/subchannel.c',
-        'src/core/ext/filters/client_channel/subchannel_index.c',
-        'src/core/ext/filters/client_channel/uri_parser.c',
-        'src/core/ext/filters/deadline/deadline_filter.c',
-        'src/core/ext/transport/chttp2/transport/bin_decoder.c',
-        'src/core/ext/transport/chttp2/transport/bin_encoder.c',
-        'src/core/ext/transport/chttp2/transport/chttp2_plugin.c',
-        'src/core/ext/transport/chttp2/transport/chttp2_transport.c',
-        'src/core/ext/transport/chttp2/transport/flow_control.c',
-        'src/core/ext/transport/chttp2/transport/frame_data.c',
-        'src/core/ext/transport/chttp2/transport/frame_goaway.c',
-        'src/core/ext/transport/chttp2/transport/frame_ping.c',
-        'src/core/ext/transport/chttp2/transport/frame_rst_stream.c',
-        'src/core/ext/transport/chttp2/transport/frame_settings.c',
-        'src/core/ext/transport/chttp2/transport/frame_window_update.c',
-        'src/core/ext/transport/chttp2/transport/hpack_encoder.c',
-        'src/core/ext/transport/chttp2/transport/hpack_parser.c',
-        'src/core/ext/transport/chttp2/transport/hpack_table.c',
-        'src/core/ext/transport/chttp2/transport/http2_settings.c',
-        'src/core/ext/transport/chttp2/transport/huffsyms.c',
-        'src/core/ext/transport/chttp2/transport/incoming_metadata.c',
-        'src/core/ext/transport/chttp2/transport/parsing.c',
-        'src/core/ext/transport/chttp2/transport/stream_lists.c',
-        'src/core/ext/transport/chttp2/transport/stream_map.c',
-        'src/core/ext/transport/chttp2/transport/varint.c',
-        'src/core/ext/transport/chttp2/transport/writing.c',
-        'src/core/ext/transport/chttp2/alpn/alpn.c',
-        'src/core/ext/filters/http/client/http_client_filter.c',
-        'src/core/ext/filters/http/http_filters_plugin.c',
-        'src/core/ext/filters/http/message_compress/message_compress_filter.c',
-        'src/core/ext/filters/http/server/http_server_filter.c',
+        'src/core/lib/surface/metadata_array.cc',
+        'src/core/lib/surface/server.cc',
+        'src/core/lib/surface/validate_metadata.cc',
+        'src/core/lib/surface/version.cc',
+        'src/core/lib/transport/bdp_estimator.cc',
+        'src/core/lib/transport/byte_stream.cc',
+        'src/core/lib/transport/connectivity_state.cc',
+        'src/core/lib/transport/error_utils.cc',
+        'src/core/lib/transport/metadata.cc',
+        'src/core/lib/transport/metadata_batch.cc',
+        'src/core/lib/transport/pid_controller.cc',
+        'src/core/lib/transport/service_config.cc',
+        'src/core/lib/transport/static_metadata.cc',
+        'src/core/lib/transport/status_conversion.cc',
+        'src/core/lib/transport/timeout_encoding.cc',
+        'src/core/lib/transport/transport.cc',
+        'src/core/lib/transport/transport_op_string.cc',
+        'src/core/lib/debug/trace.cc',
+        'src/core/ext/filters/client_channel/channel_connectivity.cc',
+        'src/core/ext/filters/client_channel/client_channel.cc',
+        'src/core/ext/filters/client_channel/client_channel_factory.cc',
+        'src/core/ext/filters/client_channel/client_channel_plugin.cc',
+        'src/core/ext/filters/client_channel/connector.cc',
+        'src/core/ext/filters/client_channel/http_connect_handshaker.cc',
+        'src/core/ext/filters/client_channel/http_proxy.cc',
+        'src/core/ext/filters/client_channel/lb_policy.cc',
+        'src/core/ext/filters/client_channel/lb_policy_factory.cc',
+        'src/core/ext/filters/client_channel/lb_policy_registry.cc',
+        'src/core/ext/filters/client_channel/parse_address.cc',
+        'src/core/ext/filters/client_channel/proxy_mapper.cc',
+        'src/core/ext/filters/client_channel/proxy_mapper_registry.cc',
+        'src/core/ext/filters/client_channel/resolver.cc',
+        'src/core/ext/filters/client_channel/resolver_factory.cc',
+        'src/core/ext/filters/client_channel/resolver_registry.cc',
+        'src/core/ext/filters/client_channel/retry_throttle.cc',
+        'src/core/ext/filters/client_channel/subchannel.cc',
+        'src/core/ext/filters/client_channel/subchannel_index.cc',
+        'src/core/ext/filters/client_channel/uri_parser.cc',
+        'src/core/ext/filters/deadline/deadline_filter.cc',
+        'src/core/ext/transport/chttp2/transport/bin_decoder.cc',
+        'src/core/ext/transport/chttp2/transport/bin_encoder.cc',
+        'src/core/ext/transport/chttp2/transport/chttp2_plugin.cc',
+        'src/core/ext/transport/chttp2/transport/chttp2_transport.cc',
+        'src/core/ext/transport/chttp2/transport/flow_control.cc',
+        'src/core/ext/transport/chttp2/transport/frame_data.cc',
+        'src/core/ext/transport/chttp2/transport/frame_goaway.cc',
+        'src/core/ext/transport/chttp2/transport/frame_ping.cc',
+        'src/core/ext/transport/chttp2/transport/frame_rst_stream.cc',
+        'src/core/ext/transport/chttp2/transport/frame_settings.cc',
+        'src/core/ext/transport/chttp2/transport/frame_window_update.cc',
+        'src/core/ext/transport/chttp2/transport/hpack_encoder.cc',
+        'src/core/ext/transport/chttp2/transport/hpack_parser.cc',
+        'src/core/ext/transport/chttp2/transport/hpack_table.cc',
+        'src/core/ext/transport/chttp2/transport/http2_settings.cc',
+        'src/core/ext/transport/chttp2/transport/huffsyms.cc',
+        'src/core/ext/transport/chttp2/transport/incoming_metadata.cc',
+        'src/core/ext/transport/chttp2/transport/parsing.cc',
+        'src/core/ext/transport/chttp2/transport/stream_lists.cc',
+        'src/core/ext/transport/chttp2/transport/stream_map.cc',
+        'src/core/ext/transport/chttp2/transport/varint.cc',
+        'src/core/ext/transport/chttp2/transport/writing.cc',
+        'src/core/ext/transport/chttp2/alpn/alpn.cc',
+        'src/core/ext/filters/http/client/http_client_filter.cc',
+        'src/core/ext/filters/http/http_filters_plugin.cc',
+        'src/core/ext/filters/http/message_compress/message_compress_filter.cc',
+        'src/core/ext/filters/http/server/http_server_filter.cc',
       ],
     },
     {
@@ -919,236 +920,236 @@
         'gpr',
       ],
       'sources': [
-        'src/core/lib/surface/init.c',
-        'src/core/lib/surface/init_unsecure.c',
-        'src/core/lib/channel/channel_args.c',
-        'src/core/lib/channel/channel_stack.c',
-        'src/core/lib/channel/channel_stack_builder.c',
-        'src/core/lib/channel/connected_channel.c',
-        'src/core/lib/channel/handshaker.c',
-        'src/core/lib/channel/handshaker_factory.c',
-        'src/core/lib/channel/handshaker_registry.c',
-        'src/core/lib/compression/compression.c',
-        'src/core/lib/compression/message_compress.c',
-        'src/core/lib/compression/stream_compression.c',
-        'src/core/lib/compression/stream_compression_gzip.c',
-        'src/core/lib/compression/stream_compression_identity.c',
-        'src/core/lib/debug/stats.c',
-        'src/core/lib/debug/stats_data.c',
-        'src/core/lib/http/format_request.c',
-        'src/core/lib/http/httpcli.c',
-        'src/core/lib/http/parser.c',
-        'src/core/lib/iomgr/call_combiner.c',
-        'src/core/lib/iomgr/closure.c',
-        'src/core/lib/iomgr/combiner.c',
-        'src/core/lib/iomgr/endpoint.c',
-        'src/core/lib/iomgr/endpoint_pair_posix.c',
-        'src/core/lib/iomgr/endpoint_pair_uv.c',
-        'src/core/lib/iomgr/endpoint_pair_windows.c',
-        'src/core/lib/iomgr/error.c',
-        'src/core/lib/iomgr/ev_epoll1_linux.c',
-        'src/core/lib/iomgr/ev_epollex_linux.c',
-        'src/core/lib/iomgr/ev_epollsig_linux.c',
-        'src/core/lib/iomgr/ev_poll_posix.c',
-        'src/core/lib/iomgr/ev_posix.c',
-        'src/core/lib/iomgr/ev_windows.c',
-        'src/core/lib/iomgr/exec_ctx.c',
-        'src/core/lib/iomgr/executor.c',
-        'src/core/lib/iomgr/gethostname_fallback.c',
-        'src/core/lib/iomgr/gethostname_host_name_max.c',
-        'src/core/lib/iomgr/gethostname_sysconf.c',
-        'src/core/lib/iomgr/iocp_windows.c',
-        'src/core/lib/iomgr/iomgr.c',
-        'src/core/lib/iomgr/iomgr_posix.c',
-        'src/core/lib/iomgr/iomgr_uv.c',
-        'src/core/lib/iomgr/iomgr_windows.c',
-        'src/core/lib/iomgr/is_epollexclusive_available.c',
-        'src/core/lib/iomgr/load_file.c',
-        'src/core/lib/iomgr/lockfree_event.c',
-        'src/core/lib/iomgr/network_status_tracker.c',
-        'src/core/lib/iomgr/polling_entity.c',
-        'src/core/lib/iomgr/pollset_set_uv.c',
-        'src/core/lib/iomgr/pollset_set_windows.c',
-        'src/core/lib/iomgr/pollset_uv.c',
-        'src/core/lib/iomgr/pollset_windows.c',
-        'src/core/lib/iomgr/resolve_address_posix.c',
-        'src/core/lib/iomgr/resolve_address_uv.c',
-        'src/core/lib/iomgr/resolve_address_windows.c',
-        'src/core/lib/iomgr/resource_quota.c',
-        'src/core/lib/iomgr/sockaddr_utils.c',
-        'src/core/lib/iomgr/socket_factory_posix.c',
-        'src/core/lib/iomgr/socket_mutator.c',
-        'src/core/lib/iomgr/socket_utils_common_posix.c',
-        'src/core/lib/iomgr/socket_utils_linux.c',
-        'src/core/lib/iomgr/socket_utils_posix.c',
-        'src/core/lib/iomgr/socket_utils_uv.c',
-        'src/core/lib/iomgr/socket_utils_windows.c',
-        'src/core/lib/iomgr/socket_windows.c',
-        'src/core/lib/iomgr/tcp_client_posix.c',
-        'src/core/lib/iomgr/tcp_client_uv.c',
-        'src/core/lib/iomgr/tcp_client_windows.c',
-        'src/core/lib/iomgr/tcp_posix.c',
-        'src/core/lib/iomgr/tcp_server_posix.c',
-        'src/core/lib/iomgr/tcp_server_utils_posix_common.c',
-        'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c',
-        'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c',
-        'src/core/lib/iomgr/tcp_server_uv.c',
-        'src/core/lib/iomgr/tcp_server_windows.c',
-        'src/core/lib/iomgr/tcp_uv.c',
-        'src/core/lib/iomgr/tcp_windows.c',
-        'src/core/lib/iomgr/time_averaged_stats.c',
-        'src/core/lib/iomgr/timer_generic.c',
-        'src/core/lib/iomgr/timer_heap.c',
-        'src/core/lib/iomgr/timer_manager.c',
-        'src/core/lib/iomgr/timer_uv.c',
-        'src/core/lib/iomgr/udp_server.c',
-        'src/core/lib/iomgr/unix_sockets_posix.c',
-        'src/core/lib/iomgr/unix_sockets_posix_noop.c',
-        'src/core/lib/iomgr/wakeup_fd_cv.c',
-        'src/core/lib/iomgr/wakeup_fd_eventfd.c',
-        'src/core/lib/iomgr/wakeup_fd_nospecial.c',
-        'src/core/lib/iomgr/wakeup_fd_pipe.c',
-        'src/core/lib/iomgr/wakeup_fd_posix.c',
-        'src/core/lib/json/json.c',
-        'src/core/lib/json/json_reader.c',
-        'src/core/lib/json/json_string.c',
-        'src/core/lib/json/json_writer.c',
-        'src/core/lib/slice/b64.c',
-        'src/core/lib/slice/percent_encoding.c',
-        'src/core/lib/slice/slice.c',
-        'src/core/lib/slice/slice_buffer.c',
-        'src/core/lib/slice/slice_hash_table.c',
-        'src/core/lib/slice/slice_intern.c',
-        'src/core/lib/slice/slice_string_helpers.c',
-        'src/core/lib/surface/alarm.c',
-        'src/core/lib/surface/api_trace.c',
-        'src/core/lib/surface/byte_buffer.c',
-        'src/core/lib/surface/byte_buffer_reader.c',
-        'src/core/lib/surface/call.c',
-        'src/core/lib/surface/call_details.c',
-        'src/core/lib/surface/call_log_batch.c',
-        'src/core/lib/surface/channel.c',
-        'src/core/lib/surface/channel_init.c',
-        'src/core/lib/surface/channel_ping.c',
-        'src/core/lib/surface/channel_stack_type.c',
-        'src/core/lib/surface/completion_queue.c',
-        'src/core/lib/surface/completion_queue_factory.c',
-        'src/core/lib/surface/event_string.c',
+        'src/core/lib/surface/init.cc',
+        'src/core/lib/surface/init_unsecure.cc',
+        'src/core/lib/channel/channel_args.cc',
+        'src/core/lib/channel/channel_stack.cc',
+        'src/core/lib/channel/channel_stack_builder.cc',
+        'src/core/lib/channel/connected_channel.cc',
+        'src/core/lib/channel/handshaker.cc',
+        'src/core/lib/channel/handshaker_factory.cc',
+        'src/core/lib/channel/handshaker_registry.cc',
+        'src/core/lib/compression/compression.cc',
+        'src/core/lib/compression/message_compress.cc',
+        'src/core/lib/compression/stream_compression.cc',
+        'src/core/lib/compression/stream_compression_gzip.cc',
+        'src/core/lib/compression/stream_compression_identity.cc',
+        'src/core/lib/debug/stats.cc',
+        'src/core/lib/debug/stats_data.cc',
+        'src/core/lib/http/format_request.cc',
+        'src/core/lib/http/httpcli.cc',
+        'src/core/lib/http/parser.cc',
+        'src/core/lib/iomgr/call_combiner.cc',
+        'src/core/lib/iomgr/closure.cc',
+        'src/core/lib/iomgr/combiner.cc',
+        'src/core/lib/iomgr/endpoint.cc',
+        'src/core/lib/iomgr/endpoint_pair_posix.cc',
+        'src/core/lib/iomgr/endpoint_pair_uv.cc',
+        'src/core/lib/iomgr/endpoint_pair_windows.cc',
+        'src/core/lib/iomgr/error.cc',
+        'src/core/lib/iomgr/ev_epoll1_linux.cc',
+        'src/core/lib/iomgr/ev_epollex_linux.cc',
+        'src/core/lib/iomgr/ev_epollsig_linux.cc',
+        'src/core/lib/iomgr/ev_poll_posix.cc',
+        'src/core/lib/iomgr/ev_posix.cc',
+        'src/core/lib/iomgr/ev_windows.cc',
+        'src/core/lib/iomgr/exec_ctx.cc',
+        'src/core/lib/iomgr/executor.cc',
+        'src/core/lib/iomgr/gethostname_fallback.cc',
+        'src/core/lib/iomgr/gethostname_host_name_max.cc',
+        'src/core/lib/iomgr/gethostname_sysconf.cc',
+        'src/core/lib/iomgr/iocp_windows.cc',
+        'src/core/lib/iomgr/iomgr.cc',
+        'src/core/lib/iomgr/iomgr_posix.cc',
+        'src/core/lib/iomgr/iomgr_uv.cc',
+        'src/core/lib/iomgr/iomgr_windows.cc',
+        'src/core/lib/iomgr/is_epollexclusive_available.cc',
+        'src/core/lib/iomgr/load_file.cc',
+        'src/core/lib/iomgr/lockfree_event.cc',
+        'src/core/lib/iomgr/network_status_tracker.cc',
+        'src/core/lib/iomgr/polling_entity.cc',
+        'src/core/lib/iomgr/pollset_set_uv.cc',
+        'src/core/lib/iomgr/pollset_set_windows.cc',
+        'src/core/lib/iomgr/pollset_uv.cc',
+        'src/core/lib/iomgr/pollset_windows.cc',
+        'src/core/lib/iomgr/resolve_address_posix.cc',
+        'src/core/lib/iomgr/resolve_address_uv.cc',
+        'src/core/lib/iomgr/resolve_address_windows.cc',
+        'src/core/lib/iomgr/resource_quota.cc',
+        'src/core/lib/iomgr/sockaddr_utils.cc',
+        'src/core/lib/iomgr/socket_factory_posix.cc',
+        'src/core/lib/iomgr/socket_mutator.cc',
+        'src/core/lib/iomgr/socket_utils_common_posix.cc',
+        'src/core/lib/iomgr/socket_utils_linux.cc',
+        'src/core/lib/iomgr/socket_utils_posix.cc',
+        'src/core/lib/iomgr/socket_utils_uv.cc',
+        'src/core/lib/iomgr/socket_utils_windows.cc',
+        'src/core/lib/iomgr/socket_windows.cc',
+        'src/core/lib/iomgr/tcp_client_posix.cc',
+        'src/core/lib/iomgr/tcp_client_uv.cc',
+        'src/core/lib/iomgr/tcp_client_windows.cc',
+        'src/core/lib/iomgr/tcp_posix.cc',
+        'src/core/lib/iomgr/tcp_server_posix.cc',
+        'src/core/lib/iomgr/tcp_server_utils_posix_common.cc',
+        'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc',
+        'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc',
+        'src/core/lib/iomgr/tcp_server_uv.cc',
+        'src/core/lib/iomgr/tcp_server_windows.cc',
+        'src/core/lib/iomgr/tcp_uv.cc',
+        'src/core/lib/iomgr/tcp_windows.cc',
+        'src/core/lib/iomgr/time_averaged_stats.cc',
+        'src/core/lib/iomgr/timer_generic.cc',
+        'src/core/lib/iomgr/timer_heap.cc',
+        'src/core/lib/iomgr/timer_manager.cc',
+        'src/core/lib/iomgr/timer_uv.cc',
+        'src/core/lib/iomgr/udp_server.cc',
+        'src/core/lib/iomgr/unix_sockets_posix.cc',
+        'src/core/lib/iomgr/unix_sockets_posix_noop.cc',
+        'src/core/lib/iomgr/wakeup_fd_cv.cc',
+        'src/core/lib/iomgr/wakeup_fd_eventfd.cc',
+        'src/core/lib/iomgr/wakeup_fd_nospecial.cc',
+        'src/core/lib/iomgr/wakeup_fd_pipe.cc',
+        'src/core/lib/iomgr/wakeup_fd_posix.cc',
+        'src/core/lib/json/json.cc',
+        'src/core/lib/json/json_reader.cc',
+        'src/core/lib/json/json_string.cc',
+        'src/core/lib/json/json_writer.cc',
+        'src/core/lib/slice/b64.cc',
+        'src/core/lib/slice/percent_encoding.cc',
+        'src/core/lib/slice/slice.cc',
+        'src/core/lib/slice/slice_buffer.cc',
+        'src/core/lib/slice/slice_hash_table.cc',
+        'src/core/lib/slice/slice_intern.cc',
+        'src/core/lib/slice/slice_string_helpers.cc',
+        'src/core/lib/surface/alarm.cc',
+        'src/core/lib/surface/api_trace.cc',
+        'src/core/lib/surface/byte_buffer.cc',
+        'src/core/lib/surface/byte_buffer_reader.cc',
+        'src/core/lib/surface/call.cc',
+        'src/core/lib/surface/call_details.cc',
+        'src/core/lib/surface/call_log_batch.cc',
+        'src/core/lib/surface/channel.cc',
+        'src/core/lib/surface/channel_init.cc',
+        'src/core/lib/surface/channel_ping.cc',
+        'src/core/lib/surface/channel_stack_type.cc',
+        'src/core/lib/surface/completion_queue.cc',
+        'src/core/lib/surface/completion_queue_factory.cc',
+        'src/core/lib/surface/event_string.cc',
         'src/core/lib/surface/lame_client.cc',
-        'src/core/lib/surface/metadata_array.c',
-        'src/core/lib/surface/server.c',
-        'src/core/lib/surface/validate_metadata.c',
-        'src/core/lib/surface/version.c',
-        'src/core/lib/transport/bdp_estimator.c',
-        'src/core/lib/transport/byte_stream.c',
-        'src/core/lib/transport/connectivity_state.c',
-        'src/core/lib/transport/error_utils.c',
-        'src/core/lib/transport/metadata.c',
-        'src/core/lib/transport/metadata_batch.c',
-        'src/core/lib/transport/pid_controller.c',
-        'src/core/lib/transport/service_config.c',
-        'src/core/lib/transport/static_metadata.c',
-        'src/core/lib/transport/status_conversion.c',
-        'src/core/lib/transport/timeout_encoding.c',
-        'src/core/lib/transport/transport.c',
-        'src/core/lib/transport/transport_op_string.c',
-        'src/core/lib/debug/trace.c',
-        'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
-        'src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c',
-        'src/core/ext/transport/chttp2/transport/bin_decoder.c',
-        'src/core/ext/transport/chttp2/transport/bin_encoder.c',
-        'src/core/ext/transport/chttp2/transport/chttp2_plugin.c',
-        'src/core/ext/transport/chttp2/transport/chttp2_transport.c',
-        'src/core/ext/transport/chttp2/transport/flow_control.c',
-        'src/core/ext/transport/chttp2/transport/frame_data.c',
-        'src/core/ext/transport/chttp2/transport/frame_goaway.c',
-        'src/core/ext/transport/chttp2/transport/frame_ping.c',
-        'src/core/ext/transport/chttp2/transport/frame_rst_stream.c',
-        'src/core/ext/transport/chttp2/transport/frame_settings.c',
-        'src/core/ext/transport/chttp2/transport/frame_window_update.c',
-        'src/core/ext/transport/chttp2/transport/hpack_encoder.c',
-        'src/core/ext/transport/chttp2/transport/hpack_parser.c',
-        'src/core/ext/transport/chttp2/transport/hpack_table.c',
-        'src/core/ext/transport/chttp2/transport/http2_settings.c',
-        'src/core/ext/transport/chttp2/transport/huffsyms.c',
-        'src/core/ext/transport/chttp2/transport/incoming_metadata.c',
-        'src/core/ext/transport/chttp2/transport/parsing.c',
-        'src/core/ext/transport/chttp2/transport/stream_lists.c',
-        'src/core/ext/transport/chttp2/transport/stream_map.c',
-        'src/core/ext/transport/chttp2/transport/varint.c',
-        'src/core/ext/transport/chttp2/transport/writing.c',
-        'src/core/ext/transport/chttp2/alpn/alpn.c',
-        'src/core/ext/filters/http/client/http_client_filter.c',
-        'src/core/ext/filters/http/http_filters_plugin.c',
-        'src/core/ext/filters/http/message_compress/message_compress_filter.c',
-        'src/core/ext/filters/http/server/http_server_filter.c',
-        'src/core/ext/transport/chttp2/server/chttp2_server.c',
-        'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
-        'src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c',
-        'src/core/ext/transport/chttp2/client/chttp2_connector.c',
-        'src/core/ext/filters/client_channel/channel_connectivity.c',
-        'src/core/ext/filters/client_channel/client_channel.c',
-        'src/core/ext/filters/client_channel/client_channel_factory.c',
-        'src/core/ext/filters/client_channel/client_channel_plugin.c',
-        'src/core/ext/filters/client_channel/connector.c',
-        'src/core/ext/filters/client_channel/http_connect_handshaker.c',
-        'src/core/ext/filters/client_channel/http_proxy.c',
-        'src/core/ext/filters/client_channel/lb_policy.c',
-        'src/core/ext/filters/client_channel/lb_policy_factory.c',
-        'src/core/ext/filters/client_channel/lb_policy_registry.c',
-        'src/core/ext/filters/client_channel/parse_address.c',
-        'src/core/ext/filters/client_channel/proxy_mapper.c',
-        'src/core/ext/filters/client_channel/proxy_mapper_registry.c',
-        'src/core/ext/filters/client_channel/resolver.c',
-        'src/core/ext/filters/client_channel/resolver_factory.c',
-        'src/core/ext/filters/client_channel/resolver_registry.c',
-        'src/core/ext/filters/client_channel/retry_throttle.c',
-        'src/core/ext/filters/client_channel/subchannel.c',
-        'src/core/ext/filters/client_channel/subchannel_index.c',
-        'src/core/ext/filters/client_channel/uri_parser.c',
-        'src/core/ext/filters/deadline/deadline_filter.c',
-        'src/core/ext/transport/inproc/inproc_plugin.c',
-        'src/core/ext/transport/inproc/inproc_transport.c',
-        'src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c',
-        'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c',
-        'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c',
-        'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c',
-        'src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c',
-        'src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c',
-        'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c',
-        'src/core/ext/filters/load_reporting/server_load_reporting_filter.c',
-        'src/core/ext/filters/load_reporting/server_load_reporting_plugin.c',
-        'src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c',
-        'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c',
-        'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.c',
-        'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c',
-        'src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c',
+        'src/core/lib/surface/metadata_array.cc',
+        'src/core/lib/surface/server.cc',
+        'src/core/lib/surface/validate_metadata.cc',
+        'src/core/lib/surface/version.cc',
+        'src/core/lib/transport/bdp_estimator.cc',
+        'src/core/lib/transport/byte_stream.cc',
+        'src/core/lib/transport/connectivity_state.cc',
+        'src/core/lib/transport/error_utils.cc',
+        'src/core/lib/transport/metadata.cc',
+        'src/core/lib/transport/metadata_batch.cc',
+        'src/core/lib/transport/pid_controller.cc',
+        'src/core/lib/transport/service_config.cc',
+        'src/core/lib/transport/static_metadata.cc',
+        'src/core/lib/transport/status_conversion.cc',
+        'src/core/lib/transport/timeout_encoding.cc',
+        'src/core/lib/transport/transport.cc',
+        'src/core/lib/transport/transport_op_string.cc',
+        'src/core/lib/debug/trace.cc',
+        'src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc',
+        'src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc',
+        'src/core/ext/transport/chttp2/transport/bin_decoder.cc',
+        'src/core/ext/transport/chttp2/transport/bin_encoder.cc',
+        'src/core/ext/transport/chttp2/transport/chttp2_plugin.cc',
+        'src/core/ext/transport/chttp2/transport/chttp2_transport.cc',
+        'src/core/ext/transport/chttp2/transport/flow_control.cc',
+        'src/core/ext/transport/chttp2/transport/frame_data.cc',
+        'src/core/ext/transport/chttp2/transport/frame_goaway.cc',
+        'src/core/ext/transport/chttp2/transport/frame_ping.cc',
+        'src/core/ext/transport/chttp2/transport/frame_rst_stream.cc',
+        'src/core/ext/transport/chttp2/transport/frame_settings.cc',
+        'src/core/ext/transport/chttp2/transport/frame_window_update.cc',
+        'src/core/ext/transport/chttp2/transport/hpack_encoder.cc',
+        'src/core/ext/transport/chttp2/transport/hpack_parser.cc',
+        'src/core/ext/transport/chttp2/transport/hpack_table.cc',
+        'src/core/ext/transport/chttp2/transport/http2_settings.cc',
+        'src/core/ext/transport/chttp2/transport/huffsyms.cc',
+        'src/core/ext/transport/chttp2/transport/incoming_metadata.cc',
+        'src/core/ext/transport/chttp2/transport/parsing.cc',
+        'src/core/ext/transport/chttp2/transport/stream_lists.cc',
+        'src/core/ext/transport/chttp2/transport/stream_map.cc',
+        'src/core/ext/transport/chttp2/transport/varint.cc',
+        'src/core/ext/transport/chttp2/transport/writing.cc',
+        'src/core/ext/transport/chttp2/alpn/alpn.cc',
+        'src/core/ext/filters/http/client/http_client_filter.cc',
+        'src/core/ext/filters/http/http_filters_plugin.cc',
+        'src/core/ext/filters/http/message_compress/message_compress_filter.cc',
+        'src/core/ext/filters/http/server/http_server_filter.cc',
+        'src/core/ext/transport/chttp2/server/chttp2_server.cc',
+        'src/core/ext/transport/chttp2/client/insecure/channel_create.cc',
+        'src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc',
+        'src/core/ext/transport/chttp2/client/chttp2_connector.cc',
+        'src/core/ext/filters/client_channel/channel_connectivity.cc',
+        'src/core/ext/filters/client_channel/client_channel.cc',
+        'src/core/ext/filters/client_channel/client_channel_factory.cc',
+        'src/core/ext/filters/client_channel/client_channel_plugin.cc',
+        'src/core/ext/filters/client_channel/connector.cc',
+        'src/core/ext/filters/client_channel/http_connect_handshaker.cc',
+        'src/core/ext/filters/client_channel/http_proxy.cc',
+        'src/core/ext/filters/client_channel/lb_policy.cc',
+        'src/core/ext/filters/client_channel/lb_policy_factory.cc',
+        'src/core/ext/filters/client_channel/lb_policy_registry.cc',
+        'src/core/ext/filters/client_channel/parse_address.cc',
+        'src/core/ext/filters/client_channel/proxy_mapper.cc',
+        'src/core/ext/filters/client_channel/proxy_mapper_registry.cc',
+        'src/core/ext/filters/client_channel/resolver.cc',
+        'src/core/ext/filters/client_channel/resolver_factory.cc',
+        'src/core/ext/filters/client_channel/resolver_registry.cc',
+        'src/core/ext/filters/client_channel/retry_throttle.cc',
+        'src/core/ext/filters/client_channel/subchannel.cc',
+        'src/core/ext/filters/client_channel/subchannel_index.cc',
+        'src/core/ext/filters/client_channel/uri_parser.cc',
+        'src/core/ext/filters/deadline/deadline_filter.cc',
+        'src/core/ext/transport/inproc/inproc_plugin.cc',
+        'src/core/ext/transport/inproc/inproc_transport.cc',
+        'src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc',
+        'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc',
+        'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc',
+        'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc',
+        'src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc',
+        'src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc',
+        'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc',
+        'src/core/ext/filters/load_reporting/server_load_reporting_filter.cc',
+        'src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc',
+        'src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc',
+        'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc',
+        'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.cc',
+        'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc',
+        'src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc',
         'src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c',
         'third_party/nanopb/pb_common.c',
         'third_party/nanopb/pb_decode.c',
         'third_party/nanopb/pb_encode.c',
-        'src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c',
-        'src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c',
-        'src/core/ext/census/base_resources.c',
-        'src/core/ext/census/context.c',
+        'src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc',
+        'src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc',
+        'src/core/ext/census/base_resources.cc',
+        'src/core/ext/census/context.cc',
         'src/core/ext/census/gen/census.pb.c',
         'src/core/ext/census/gen/trace_context.pb.c',
-        'src/core/ext/census/grpc_context.c',
-        'src/core/ext/census/grpc_filter.c',
-        'src/core/ext/census/grpc_plugin.c',
-        'src/core/ext/census/initialize.c',
-        'src/core/ext/census/intrusive_hash_map.c',
-        'src/core/ext/census/mlog.c',
-        'src/core/ext/census/operation.c',
-        'src/core/ext/census/placeholders.c',
-        'src/core/ext/census/resource.c',
-        'src/core/ext/census/trace_context.c',
-        'src/core/ext/census/tracing.c',
-        'src/core/ext/filters/max_age/max_age_filter.c',
-        'src/core/ext/filters/message_size/message_size_filter.c',
-        'src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c',
-        'src/core/ext/filters/workarounds/workaround_utils.c',
-        'src/core/plugin_registry/grpc_unsecure_plugin_registry.c',
+        'src/core/ext/census/grpc_context.cc',
+        'src/core/ext/census/grpc_filter.cc',
+        'src/core/ext/census/grpc_plugin.cc',
+        'src/core/ext/census/initialize.cc',
+        'src/core/ext/census/intrusive_hash_map.cc',
+        'src/core/ext/census/mlog.cc',
+        'src/core/ext/census/operation.cc',
+        'src/core/ext/census/placeholders.cc',
+        'src/core/ext/census/resource.cc',
+        'src/core/ext/census/trace_context.cc',
+        'src/core/ext/census/tracing.cc',
+        'src/core/ext/filters/max_age/max_age_filter.cc',
+        'src/core/ext/filters/message_size/message_size_filter.cc',
+        'src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc',
+        'src/core/ext/filters/workarounds/workaround_utils.cc',
+        'src/core/plugin_registry/grpc_unsecure_plugin_registry.cc',
       ],
     },
     {
diff --git a/include/grpc/impl/codegen/port_platform.h b/include/grpc/impl/codegen/port_platform.h
index 0f4316c..baea4bc 100644
--- a/include/grpc/impl/codegen/port_platform.h
+++ b/include/grpc/impl/codegen/port_platform.h
@@ -415,4 +415,8 @@
 #endif /* GPR_ATTRIBUTE_NO_TSAN (2) */
 #endif /* GPR_ATTRIBUTE_NO_TSAN (1) */
 
+#ifndef __STDC_FORMAT_MACROS
+#define __STDC_FORMAT_MACROS
+#endif
+
 #endif /* GRPC_IMPL_CODEGEN_PORT_PLATFORM_H */
diff --git a/include/grpc/module.modulemap b/include/grpc/module.modulemap
index 51bfef2..226cc6c 100644
--- a/include/grpc/module.modulemap
+++ b/include/grpc/module.modulemap
@@ -1,12 +1,69 @@
+
 framework module grpc {
   umbrella header "grpc.h"
 
-  header "byte_buffer_reader.h"
-  header "grpc_security.h"
-  header "grpc_security_constants.h"
   header "support/alloc.h"
+  header "support/atm.h"
+  header "support/atm_gcc_atomic.h"
+  header "support/avl.h"
+  header "support/cmdline.h"
+  header "support/cpu.h"
+  header "support/histogram.h"
+  header "support/host_port.h"
+  header "support/log.h"
+  header "support/log_windows.h"
   header "support/port_platform.h"
   header "support/string_util.h"
+  header "support/subprocess.h"
+  header "support/sync.h"
+  header "support/sync_custom.h"
+  header "support/sync_generic.h"
+  header "support/sync_posix.h"
+  header "support/thd.h"
+  header "support/time.h"
+  header "support/tls.h"
+  header "support/tls_pthread.h"
+  header "support/useful.h"
+  header "impl/codegen/atm.h"
+  header "impl/codegen/atm_gcc_atomic.h"
+  header "impl/codegen/gpr_slice.h"
+  header "impl/codegen/gpr_types.h"
+  header "impl/codegen/port_platform.h"
+  header "impl/codegen/sync.h"
+  header "impl/codegen/sync_custom.h"
+  header "impl/codegen/sync_generic.h"
+  header "impl/codegen/sync_posix.h"
+  header "impl/codegen/byte_buffer.h"
+  header "impl/codegen/byte_buffer_reader.h"
+  header "impl/codegen/compression_types.h"
+  header "impl/codegen/connectivity_state.h"
+  header "impl/codegen/exec_ctx_fwd.h"
+  header "impl/codegen/grpc_types.h"
+  header "impl/codegen/propagation_bits.h"
+  header "impl/codegen/slice.h"
+  header "impl/codegen/status.h"
+  header "impl/codegen/atm.h"
+  header "impl/codegen/atm_gcc_atomic.h"
+  header "impl/codegen/gpr_slice.h"
+  header "impl/codegen/gpr_types.h"
+  header "impl/codegen/port_platform.h"
+  header "impl/codegen/sync.h"
+  header "impl/codegen/sync_custom.h"
+  header "impl/codegen/sync_generic.h"
+  header "impl/codegen/sync_posix.h"
+  header "grpc_security.h"
+  header "byte_buffer.h"
+  header "byte_buffer_reader.h"
+  header "compression.h"
+  header "grpc.h"
+  header "grpc_posix.h"
+  header "grpc_security_constants.h"
+  header "load_reporting.h"
+  header "slice.h"
+  header "slice_buffer.h"
+  header "status.h"
+  header "support/workaround_list.h"
+  header "census.h"
 
   export *
   module * { export * }
diff --git a/include/grpc/support/avl.h b/include/grpc/support/avl.h
index d53ff5d..d8a5efd 100644
--- a/include/grpc/support/avl.h
+++ b/include/grpc/support/avl.h
@@ -21,6 +21,10 @@
 
 #include <grpc/support/sync.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /** internal node of an AVL tree */
 typedef struct gpr_avl_node {
   gpr_refcount refs;
@@ -91,4 +95,8 @@
 /** Return 1 if avl is empty, 0 otherwise */
 GPRAPI int gpr_avl_is_empty(gpr_avl avl);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_SUPPORT_AVL_H */
diff --git a/package.json b/package.json
index 2e31275..a0f0ff1 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "grpc",
-  "version": "1.7.0-dev",
+  "version": "1.8.0-dev",
   "author": "Google Inc.",
   "description": "gRPC Library for Node",
   "homepage": "https://grpc.io/",
diff --git a/package.xml b/package.xml
index 0eea122..3620689 100644
--- a/package.xml
+++ b/package.xml
@@ -13,8 +13,8 @@
  <date>2017-08-24</date>
  <time>16:06:07</time>
  <version>
-  <release>1.7.0dev</release>
-  <api>1.7.0dev</api>
+  <release>1.8.0dev</release>
+  <api>1.8.0dev</api>
  </version>
  <stability>
   <release>beta</release>
@@ -112,52 +112,52 @@
     <file baseinstalldir="/" name="src/core/lib/support/string_windows.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/support/time_precise.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/support/tmpfile.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/profiling/basic_timers.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/profiling/stap_timers.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/alloc.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/arena.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/atm.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/avl.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/backoff.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/cmdline.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/cpu_iphone.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/cpu_linux.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/cpu_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/cpu_windows.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/env_linux.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/env_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/env_windows.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/histogram.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/host_port.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/log.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/log_android.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/log_linux.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/log_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/log_windows.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/mpscq.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/murmur_hash.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/stack_lockfree.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/string.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/string_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/string_util_windows.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/string_windows.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/subprocess_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/subprocess_windows.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/sync.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/sync_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/sync_windows.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/thd.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/thd_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/thd_windows.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/time.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/time_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/time_precise.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/time_windows.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/tls_pthread.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/tmpfile_msys.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/tmpfile_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/tmpfile_windows.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/wrap_memcpy.c" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/profiling/basic_timers.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/profiling/stap_timers.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/alloc.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/arena.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/atm.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/avl.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/backoff.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/cmdline.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/cpu_iphone.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/cpu_linux.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/cpu_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/cpu_windows.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/env_linux.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/env_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/env_windows.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/histogram.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/host_port.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/log.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/log_android.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/log_linux.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/log_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/log_windows.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/mpscq.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/murmur_hash.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/stack_lockfree.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/string.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/string_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/string_util_windows.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/string_windows.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/subprocess_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/subprocess_windows.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/sync.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/sync_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/sync_windows.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/thd.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/thd_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/thd_windows.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/time.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/time_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/time_precise.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/time_windows.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/tls_pthread.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/tmpfile_msys.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/tmpfile_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/tmpfile_windows.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/wrap_memcpy.cc" role="src" />
     <file baseinstalldir="/" name="include/grpc/impl/codegen/byte_buffer.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/impl/codegen/byte_buffer_reader.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/impl/codegen/compression_types.h" role="src" />
@@ -419,267 +419,267 @@
     <file baseinstalldir="/" name="src/core/ext/filters/message_size/message_size_filter.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/filters/workarounds/workaround_utils.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/surface/init.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/channel/channel_args.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/channel/channel_stack.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/channel/channel_stack_builder.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/channel/connected_channel.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/channel/handshaker.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/channel/handshaker_factory.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/channel/handshaker_registry.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/compression/compression.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/compression/message_compress.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/compression/stream_compression.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/compression/stream_compression_gzip.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/compression/stream_compression_identity.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/debug/stats.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/debug/stats_data.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/http/format_request.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/http/httpcli.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/http/parser.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/call_combiner.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/closure.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/combiner.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/endpoint.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/endpoint_pair_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/endpoint_pair_uv.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/endpoint_pair_windows.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/error.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/ev_epoll1_linux.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/ev_epollex_linux.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/ev_epollsig_linux.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/ev_poll_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/ev_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/ev_windows.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/exec_ctx.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/executor.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/gethostname_fallback.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/gethostname_host_name_max.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/gethostname_sysconf.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/iocp_windows.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/iomgr.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/iomgr_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/iomgr_uv.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/iomgr_windows.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/is_epollexclusive_available.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/load_file.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/lockfree_event.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/network_status_tracker.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/polling_entity.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/pollset_set_uv.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/pollset_set_windows.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/pollset_uv.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/pollset_windows.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/resolve_address_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/resolve_address_uv.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/resolve_address_windows.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/resource_quota.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/sockaddr_utils.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/socket_factory_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/socket_mutator.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/socket_utils_common_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/socket_utils_linux.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/socket_utils_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/socket_utils_uv.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/socket_utils_windows.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/socket_windows.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_client_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_client_uv.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_client_windows.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_server_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_server_utils_posix_common.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_server_uv.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_server_windows.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_uv.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_windows.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/time_averaged_stats.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/timer_generic.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/timer_heap.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/timer_manager.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/timer_uv.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/udp_server.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/unix_sockets_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/unix_sockets_posix_noop.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/wakeup_fd_cv.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/wakeup_fd_eventfd.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/wakeup_fd_nospecial.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/wakeup_fd_pipe.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/iomgr/wakeup_fd_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/json/json.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/json/json_reader.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/json/json_string.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/json/json_writer.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/slice/b64.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/slice/percent_encoding.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/slice/slice.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/slice/slice_buffer.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/slice/slice_hash_table.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/slice/slice_intern.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/slice/slice_string_helpers.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/surface/alarm.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/surface/api_trace.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/surface/byte_buffer.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/surface/byte_buffer_reader.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/surface/call.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/surface/call_details.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/surface/call_log_batch.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/surface/channel.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/surface/channel_init.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/surface/channel_ping.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/surface/channel_stack_type.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/surface/completion_queue.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/surface/completion_queue_factory.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/surface/event_string.c" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/surface/init.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/channel/channel_args.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/channel/channel_stack.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/channel/channel_stack_builder.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/channel/connected_channel.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/channel/handshaker.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/channel/handshaker_factory.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/channel/handshaker_registry.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/compression/compression.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/compression/message_compress.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/compression/stream_compression.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/compression/stream_compression_gzip.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/compression/stream_compression_identity.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/debug/stats.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/debug/stats_data.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/http/format_request.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/http/httpcli.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/http/parser.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/call_combiner.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/closure.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/combiner.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/endpoint.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/endpoint_pair_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/endpoint_pair_uv.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/endpoint_pair_windows.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/error.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/ev_epoll1_linux.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/ev_epollex_linux.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/ev_epollsig_linux.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/ev_poll_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/ev_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/ev_windows.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/exec_ctx.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/executor.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/gethostname_fallback.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/gethostname_host_name_max.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/gethostname_sysconf.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/iocp_windows.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/iomgr.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/iomgr_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/iomgr_uv.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/iomgr_windows.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/is_epollexclusive_available.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/load_file.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/lockfree_event.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/network_status_tracker.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/polling_entity.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/pollset_set_uv.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/pollset_set_windows.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/pollset_uv.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/pollset_windows.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/resolve_address_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/resolve_address_uv.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/resolve_address_windows.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/resource_quota.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/sockaddr_utils.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/socket_factory_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/socket_mutator.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/socket_utils_common_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/socket_utils_linux.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/socket_utils_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/socket_utils_uv.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/socket_utils_windows.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/socket_windows.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_client_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_client_uv.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_client_windows.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_server_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_server_utils_posix_common.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_server_uv.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_server_windows.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_uv.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_windows.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/time_averaged_stats.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/timer_generic.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/timer_heap.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/timer_manager.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/timer_uv.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/udp_server.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/unix_sockets_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/unix_sockets_posix_noop.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/wakeup_fd_cv.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/wakeup_fd_eventfd.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/wakeup_fd_nospecial.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/wakeup_fd_pipe.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/iomgr/wakeup_fd_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/json/json.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/json/json_reader.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/json/json_string.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/json/json_writer.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/slice/b64.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/slice/percent_encoding.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/slice/slice.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/slice/slice_buffer.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/slice/slice_hash_table.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/slice/slice_intern.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/slice/slice_string_helpers.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/surface/alarm.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/surface/api_trace.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/surface/byte_buffer.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/surface/byte_buffer_reader.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/surface/call.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/surface/call_details.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/surface/call_log_batch.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/surface/channel.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/surface/channel_init.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/surface/channel_ping.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/surface/channel_stack_type.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/surface/completion_queue.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/surface/completion_queue_factory.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/surface/event_string.cc" role="src" />
     <file baseinstalldir="/" name="src/core/lib/surface/lame_client.cc" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/surface/metadata_array.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/surface/server.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/surface/validate_metadata.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/surface/version.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/transport/bdp_estimator.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/transport/byte_stream.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/transport/connectivity_state.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/transport/error_utils.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/transport/metadata.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/transport/metadata_batch.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/transport/pid_controller.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/transport/service_config.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/transport/static_metadata.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/transport/status_conversion.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/transport/timeout_encoding.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/transport/transport.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/transport/transport_op_string.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/debug/trace.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/bin_decoder.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/bin_encoder.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/chttp2_plugin.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/chttp2_transport.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/flow_control.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/frame_data.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/frame_goaway.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/frame_ping.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/frame_rst_stream.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/frame_settings.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/frame_window_update.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/hpack_encoder.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/hpack_parser.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/hpack_table.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/http2_settings.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/huffsyms.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/incoming_metadata.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/parsing.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/stream_lists.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/stream_map.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/varint.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/writing.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/alpn/alpn.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/http/client/http_client_filter.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/http/http_filters_plugin.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/http/message_compress/message_compress_filter.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/http/server/http_server_filter.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/http/httpcli_security_connector.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/security/context/security_context.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/security/credentials/composite/composite_credentials.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/security/credentials/credentials.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/security/credentials/credentials_metadata.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/security/credentials/fake/fake_credentials.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/security/credentials/google_default/credentials_generic.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/security/credentials/google_default/google_default_credentials.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/security/credentials/iam/iam_credentials.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/security/credentials/jwt/json_token.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/security/credentials/jwt/jwt_credentials.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/security/credentials/jwt/jwt_verifier.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/security/credentials/oauth2/oauth2_credentials.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/security/credentials/plugin/plugin_credentials.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/security/credentials/ssl/ssl_credentials.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/security/transport/client_auth_filter.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/security/transport/lb_targets_info.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/security/transport/secure_endpoint.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/security/transport/security_connector.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/security/transport/security_handshaker.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/security/transport/server_auth_filter.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/security/transport/tsi_error.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/security/util/json_util.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/surface/init_secure.c" role="src" />
-    <file baseinstalldir="/" name="src/core/tsi/fake_transport_security.c" role="src" />
-    <file baseinstalldir="/" name="src/core/tsi/gts_transport_security.c" role="src" />
-    <file baseinstalldir="/" name="src/core/tsi/ssl_transport_security.c" role="src" />
-    <file baseinstalldir="/" name="src/core/tsi/transport_security_grpc.c" role="src" />
-    <file baseinstalldir="/" name="src/core/tsi/transport_security.c" role="src" />
-    <file baseinstalldir="/" name="src/core/tsi/transport_security_adapter.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/server/chttp2_server.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/client/secure/secure_channel_create.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/channel_connectivity.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/client_channel.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/client_channel_factory.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/client_channel_plugin.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/connector.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/http_connect_handshaker.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/http_proxy.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy_factory.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy_registry.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/parse_address.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/proxy_mapper.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/proxy_mapper_registry.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/resolver.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/resolver_factory.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/resolver_registry.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/retry_throttle.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/subchannel.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/subchannel_index.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/uri_parser.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/deadline/deadline_filter.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/client/chttp2_connector.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/server/insecure/server_chttp2.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/client/insecure/channel_create.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/inproc/inproc_plugin.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/inproc/inproc_transport.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/surface/metadata_array.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/surface/server.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/surface/validate_metadata.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/surface/version.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/transport/bdp_estimator.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/transport/byte_stream.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/transport/connectivity_state.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/transport/error_utils.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/transport/metadata.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/transport/metadata_batch.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/transport/pid_controller.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/transport/service_config.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/transport/static_metadata.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/transport/status_conversion.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/transport/timeout_encoding.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/transport/transport.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/transport/transport_op_string.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/debug/trace.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/bin_decoder.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/bin_encoder.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/chttp2_plugin.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/chttp2_transport.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/flow_control.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/frame_data.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/frame_goaway.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/frame_ping.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/frame_rst_stream.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/frame_settings.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/frame_window_update.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/hpack_encoder.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/hpack_parser.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/hpack_table.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/http2_settings.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/huffsyms.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/incoming_metadata.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/parsing.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/stream_lists.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/stream_map.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/varint.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/writing.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/alpn/alpn.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/http/client/http_client_filter.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/http/http_filters_plugin.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/http/message_compress/message_compress_filter.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/http/server/http_server_filter.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/http/httpcli_security_connector.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/security/context/security_context.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/security/credentials/composite/composite_credentials.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/security/credentials/credentials.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/security/credentials/credentials_metadata.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/security/credentials/fake/fake_credentials.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/security/credentials/google_default/credentials_generic.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/security/credentials/google_default/google_default_credentials.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/security/credentials/iam/iam_credentials.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/security/credentials/jwt/json_token.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/security/credentials/jwt/jwt_credentials.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/security/credentials/jwt/jwt_verifier.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/security/credentials/oauth2/oauth2_credentials.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/security/credentials/plugin/plugin_credentials.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/security/credentials/ssl/ssl_credentials.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/security/transport/client_auth_filter.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/security/transport/lb_targets_info.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/security/transport/secure_endpoint.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/security/transport/security_connector.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/security/transport/security_handshaker.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/security/transport/server_auth_filter.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/security/transport/tsi_error.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/security/util/json_util.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/surface/init_secure.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/tsi/fake_transport_security.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/tsi/gts_transport_security.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/tsi/ssl_transport_security.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/tsi/transport_security_grpc.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/tsi/transport_security.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/tsi/transport_security_adapter.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/server/chttp2_server.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/channel_connectivity.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/client_channel.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/client_channel_factory.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/client_channel_plugin.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/connector.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/http_connect_handshaker.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/http_proxy.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy_factory.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy_registry.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/parse_address.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/proxy_mapper.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/proxy_mapper_registry.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/resolver.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/resolver_factory.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/resolver_registry.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/retry_throttle.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/subchannel.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/subchannel_index.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/uri_parser.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/deadline/deadline_filter.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/client/chttp2_connector.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/client/insecure/channel_create.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/inproc/inproc_plugin.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/inproc/inproc_transport.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc" role="src" />
     <file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c" role="src" />
     <file baseinstalldir="/" name="third_party/nanopb/pb_common.c" role="src" />
     <file baseinstalldir="/" name="third_party/nanopb/pb_decode.c" role="src" />
     <file baseinstalldir="/" name="third_party/nanopb/pb_encode.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/load_reporting/server_load_reporting_filter.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/load_reporting/server_load_reporting_plugin.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/census/base_resources.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/census/context.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/load_reporting/server_load_reporting_filter.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/base_resources.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/context.cc" role="src" />
     <file baseinstalldir="/" name="src/core/ext/census/gen/census.pb.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/census/gen/trace_context.pb.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/census/grpc_context.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/census/grpc_filter.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/census/grpc_plugin.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/census/initialize.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/census/intrusive_hash_map.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/census/mlog.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/census/operation.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/census/placeholders.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/census/resource.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/census/trace_context.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/census/tracing.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/max_age/max_age_filter.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/message_size/message_size_filter.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/filters/workarounds/workaround_utils.c" role="src" />
-    <file baseinstalldir="/" name="src/core/plugin_registry/grpc_plugin_registry.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/grpc_context.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/grpc_filter.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/grpc_plugin.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/initialize.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/intrusive_hash_map.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/mlog.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/operation.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/placeholders.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/resource.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/trace_context.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/tracing.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/max_age/max_age_filter.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/message_size/message_size_filter.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/filters/workarounds/workaround_utils.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/plugin_registry/grpc_plugin_registry.cc" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/aes/internal.h" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/asn1_locl.h" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/bio/internal.h" role="src" />
diff --git a/src/compiler/objective_c_generator.cc b/src/compiler/objective_c_generator.cc
index c05d153..33b5fed 100644
--- a/src/compiler/objective_c_generator.cc
+++ b/src/compiler/objective_c_generator.cc
@@ -17,6 +17,7 @@
  */
 
 #include <map>
+#include <set>
 #include <sstream>
 
 #include "src/compiler/config.h"
@@ -29,7 +30,9 @@
 using ::grpc::protobuf::io::Printer;
 using ::grpc::protobuf::MethodDescriptor;
 using ::grpc::protobuf::ServiceDescriptor;
+using ::grpc::protobuf::FileDescriptor;
 using ::std::map;
+using ::std::set;
 
 namespace grpc_objective_c_generator {
 namespace {
@@ -190,6 +193,24 @@
 
 }  // namespace
 
+::grpc::string GetAllMessageClasses(const FileDescriptor *file) {
+  ::grpc::string output;
+  set< ::grpc::string> classes;
+  for (int i = 0; i < file->service_count(); i++) {
+    const auto service = file->service(i);
+    for (int i = 0; i < service->method_count(); i++) {
+      const auto method = service->method(i);
+      classes.insert(ClassName(method->input_type()));
+      classes.insert(ClassName(method->output_type()));
+    }
+  }
+  for (auto one_class : classes) {
+    output += "  @class " + one_class + ";\n";
+  }
+
+  return output;
+}
+
 ::grpc::string GetHeader(const ServiceDescriptor *service) {
   ::grpc::string output;
   {
diff --git a/src/compiler/objective_c_generator.h b/src/compiler/objective_c_generator.h
index edbee7f..e912a52 100644
--- a/src/compiler/objective_c_generator.h
+++ b/src/compiler/objective_c_generator.h
@@ -24,8 +24,12 @@
 namespace grpc_objective_c_generator {
 
 using ::grpc::protobuf::ServiceDescriptor;
+using ::grpc::protobuf::FileDescriptor;
 using ::grpc::string;
 
+// Returns forward declaration of classes in the generated header file.
+string GetAllMessageClasses(const FileDescriptor *file);
+
 // Returns the content to be included in the "global_scope" insertion point of
 // the generated header file.
 string GetHeader(const ServiceDescriptor *service);
diff --git a/src/compiler/objective_c_plugin.cc b/src/compiler/objective_c_plugin.cc
index 96a3375..e751d05 100644
--- a/src/compiler/objective_c_plugin.cc
+++ b/src/compiler/objective_c_plugin.cc
@@ -58,9 +58,10 @@
                                "#import <RxLibrary/GRXWriteable.h>\n"
                                "#import <RxLibrary/GRXWriter.h>\n";
 
-      // TODO(jcanizales): Instead forward-declare the input and output types
-      // and import the files in the .pbrpc.m
       ::grpc::string proto_imports;
+      proto_imports += "#if GPB_GRPC_FORWARD_DECLARE_MESSAGE_PROTO\n" +
+                       grpc_objective_c_generator::GetAllMessageClasses(file) +
+                       "#else\n";
       for (int i = 0; i < file->dependency_count(); i++) {
         ::grpc::string header =
             grpc_objective_c_generator::MessageHeaderName(file->dependency(i));
@@ -70,19 +71,20 @@
           grpc_generator::StripPrefix(&base_name, "google/protobuf/");
           // create the import code snippet
           proto_imports +=
-              "#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS\n"
-              "  #import <" +
+              "  #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS\n"
+              "    #import <" +
               ::grpc::string(ProtobufLibraryFrameworkName) + "/" + base_name +
               ">\n"
-              "#else\n"
-              "  #import \"" +
+              "  #else\n"
+              "    #import \"" +
               header +
               "\"\n"
-              "#endif\n";
+              "  #endif\n";
         } else {
-          proto_imports += ::grpc::string("#import \"") + header + "\"\n";
+          proto_imports += ::grpc::string("  #import \"") + header + "\"\n";
         }
       }
+      proto_imports += "#endif\n";
 
       ::grpc::string declarations;
       for (int i = 0; i < file->service_count(); i++) {
@@ -106,6 +108,28 @@
                                ".pbrpc.h\"\n\n"
                                "#import <ProtoRPC/ProtoRPC.h>\n"
                                "#import <RxLibrary/GRXWriter+Immediate.h>\n";
+      for (int i = 0; i < file->dependency_count(); i++) {
+        ::grpc::string header =
+            grpc_objective_c_generator::MessageHeaderName(file->dependency(i));
+        const grpc::protobuf::FileDescriptor *dependency = file->dependency(i);
+        if (IsProtobufLibraryBundledProtoFile(dependency)) {
+          ::grpc::string base_name = header;
+          grpc_generator::StripPrefix(&base_name, "google/protobuf/");
+          // create the import code snippet
+          imports +=
+              "#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS\n"
+              "  #import <" +
+              ::grpc::string(ProtobufLibraryFrameworkName) + "/" + base_name +
+              ">\n"
+              "#else\n"
+              "  #import \"" +
+              header +
+              "\"\n"
+              "#endif\n";
+        } else {
+          imports += ::grpc::string("#import \"") + header + "\"\n";
+        }
+      }
 
       ::grpc::string definitions;
       for (int i = 0; i < file->service_count(); i++) {
diff --git a/src/core/ext/census/base_resources.c b/src/core/ext/census/base_resources.cc
similarity index 78%
rename from src/core/ext/census/base_resources.c
rename to src/core/ext/census/base_resources.cc
index 1f2bb39..3697c6f 100644
--- a/src/core/ext/census/base_resources.c
+++ b/src/core/ext/census/base_resources.cc
@@ -45,12 +45,12 @@
                 0,                                        // n_denominators
                 NULL};                                    // denominators
   define_resource(&r);
-  r = (resource){(char *)"server_rpc_latency",             // name
-                 (char *)"Server RPC latency in seconds",  // description
-                 0,                                        // prefix
-                 1,                                        // n_numerators
-                 &numerator,                               // numerators
-                 0,                                        // n_denominators
-                 NULL};                                    // denominators
+  r = {(char *)"server_rpc_latency",             // name
+       (char *)"Server RPC latency in seconds",  // description
+       0,                                        // prefix
+       1,                                        // n_numerators
+       &numerator,                               // numerators
+       0,                                        // n_denominators
+       NULL};                                    // denominators
   define_resource(&r);
 }
diff --git a/src/core/ext/census/base_resources.h b/src/core/ext/census/base_resources.h
index 78a4d1f..4b1b988 100644
--- a/src/core/ext/census/base_resources.h
+++ b/src/core/ext/census/base_resources.h
@@ -18,7 +18,15 @@
 #ifndef GRPC_CORE_EXT_CENSUS_BASE_RESOURCES_H
 #define GRPC_CORE_EXT_CENSUS_BASE_RESOURCES_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Define all base resources. This should be called by census initialization. */
 void define_base_resources();
 
-#endif /* GRPC_CORE_EXT_CENSUS_BASE_RESOURCES_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_CENSUS_BASE_RESOURCES_H */
\ No newline at end of file
diff --git a/src/core/ext/census/census_init.c b/src/core/ext/census/census_init.cc
similarity index 100%
rename from src/core/ext/census/census_init.c
rename to src/core/ext/census/census_init.cc
diff --git a/src/core/ext/census/census_interface.h b/src/core/ext/census/census_interface.h
index a42b68a..12438e3 100644
--- a/src/core/ext/census/census_interface.h
+++ b/src/core/ext/census/census_interface.h
@@ -24,6 +24,10 @@
 /* Maximum length of an individual census trace annotation. */
 #define CENSUS_MAX_ANNOTATION_LENGTH 200
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Structure of a census op id. Define as structure because 64bit integer is not
    available on every platform for C89. */
 typedef struct census_op_id {
@@ -58,4 +62,8 @@
 /* Ends tracing. Calling this function will invalidate the input op_id. */
 void census_tracing_end_op(census_op_id op_id);
 
-#endif /* GRPC_CORE_EXT_CENSUS_CENSUS_INTERFACE_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_CENSUS_CENSUS_INTERFACE_H */
\ No newline at end of file
diff --git a/src/core/ext/census/census_log.c b/src/core/ext/census/census_log.cc
similarity index 100%
rename from src/core/ext/census/census_log.c
rename to src/core/ext/census/census_log.cc
diff --git a/src/core/ext/census/census_log.h b/src/core/ext/census/census_log.h
index 6b68b6b..cc9e008 100644
--- a/src/core/ext/census/census_log.h
+++ b/src/core/ext/census/census_log.h
@@ -25,6 +25,10 @@
 #define CENSUS_LOG_2_MAX_RECORD_SIZE 14 /* 2^14 = 16KB */
 #define CENSUS_LOG_MAX_RECORD_SIZE (1 << CENSUS_LOG_2_MAX_RECORD_SIZE)
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Initialize the statistics logging subsystem with the given log size. A log
    size of 0 will result in the smallest possible log for the platform
    (approximately CENSUS_LOG_MAX_RECORD_SIZE * gpr_cpu_num_cores()). If
@@ -73,4 +77,8 @@
    out-of-space. */
 int census_log_out_of_space_count(void);
 
-#endif /* GRPC_CORE_EXT_CENSUS_CENSUS_LOG_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_CENSUS_CENSUS_LOG_H */
\ No newline at end of file
diff --git a/src/core/ext/census/census_rpc_stats.c b/src/core/ext/census/census_rpc_stats.cc
similarity index 100%
rename from src/core/ext/census/census_rpc_stats.c
rename to src/core/ext/census/census_rpc_stats.cc
diff --git a/src/core/ext/census/census_tracing.c b/src/core/ext/census/census_tracing.cc
similarity index 100%
rename from src/core/ext/census/census_tracing.c
rename to src/core/ext/census/census_tracing.cc
diff --git a/src/core/ext/census/context.c b/src/core/ext/census/context.cc
similarity index 100%
rename from src/core/ext/census/context.c
rename to src/core/ext/census/context.cc
diff --git a/src/core/ext/census/grpc_context.c b/src/core/ext/census/grpc_context.cc
similarity index 100%
rename from src/core/ext/census/grpc_context.c
rename to src/core/ext/census/grpc_context.cc
diff --git a/src/core/ext/census/grpc_filter.c b/src/core/ext/census/grpc_filter.cc
similarity index 100%
rename from src/core/ext/census/grpc_filter.c
rename to src/core/ext/census/grpc_filter.cc
diff --git a/src/core/ext/census/grpc_filter.h b/src/core/ext/census/grpc_filter.h
index baa7bb9..7940363 100644
--- a/src/core/ext/census/grpc_filter.h
+++ b/src/core/ext/census/grpc_filter.h
@@ -21,9 +21,17 @@
 
 #include "src/core/lib/channel/channel_stack.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Census filters: provides tracing and stats collection functionalities. It
    needs to reside right below the surface filter in the channel stack. */
 extern const grpc_channel_filter grpc_client_census_filter;
 extern const grpc_channel_filter grpc_server_census_filter;
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_CENSUS_GRPC_FILTER_H */
diff --git a/src/core/ext/census/grpc_plugin.c b/src/core/ext/census/grpc_plugin.cc
similarity index 94%
rename from src/core/ext/census/grpc_plugin.c
rename to src/core/ext/census/grpc_plugin.cc
index c0efe5a..22b16c6 100644
--- a/src/core/ext/census/grpc_plugin.c
+++ b/src/core/ext/census/grpc_plugin.cc
@@ -50,7 +50,7 @@
   return true;
 }
 
-void census_grpc_plugin_init(void) {
+extern "C" void census_grpc_plugin_init(void) {
   /* Only initialize census if no one else has and some features are
    * available. */
   if (census_enabled() == CENSUS_FEATURE_NONE &&
@@ -67,4 +67,4 @@
                                    (void *)&grpc_server_census_filter);
 }
 
-void census_grpc_plugin_shutdown(void) { census_shutdown(); }
+extern "C" void census_grpc_plugin_shutdown(void) { census_shutdown(); }
diff --git a/src/core/ext/census/hash_table.c b/src/core/ext/census/hash_table.cc
similarity index 100%
rename from src/core/ext/census/hash_table.c
rename to src/core/ext/census/hash_table.cc
diff --git a/src/core/ext/census/hash_table.h b/src/core/ext/census/hash_table.h
index 7577064..c22ba8d 100644
--- a/src/core/ext/census/hash_table.h
+++ b/src/core/ext/census/hash_table.h
@@ -23,6 +23,10 @@
 
 #include <grpc/support/port_platform.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* A chain based hash table with fixed number of buckets.
    Your probably shouldn't use this code directly. It is implemented for the
    use case in census trace store and stats store, where number of entries in
@@ -113,4 +117,8 @@
    should not invalidate data entries. */
 uint64_t census_ht_for_all(const census_ht *ht, census_ht_itr_cb);
 
-#endif /* GRPC_CORE_EXT_CENSUS_HASH_TABLE_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_CENSUS_HASH_TABLE_H */
\ No newline at end of file
diff --git a/src/core/ext/census/initialize.c b/src/core/ext/census/initialize.cc
similarity index 100%
rename from src/core/ext/census/initialize.c
rename to src/core/ext/census/initialize.cc
diff --git a/src/core/ext/census/intrusive_hash_map.c b/src/core/ext/census/intrusive_hash_map.cc
similarity index 100%
rename from src/core/ext/census/intrusive_hash_map.c
rename to src/core/ext/census/intrusive_hash_map.cc
diff --git a/src/core/ext/census/intrusive_hash_map.h b/src/core/ext/census/intrusive_hash_map.h
index f50de4f..2c7baa3 100644
--- a/src/core/ext/census/intrusive_hash_map.h
+++ b/src/core/ext/census/intrusive_hash_map.h
@@ -21,6 +21,10 @@
 
 #include "src/core/ext/census/intrusive_hash_map_internal.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* intrusive_hash_map is a fast chained hash table. This hash map is faster than
  * a dense hash map when the application calls insert and erase more often than
  * find. When the workload is dominated by find() a dense hash map may be
@@ -149,4 +153,8 @@
 void intrusive_hash_map_free(intrusive_hash_map *hash_map,
                              void (*free_object)(void *));
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_CENSUS_INTRUSIVE_HASH_MAP_H */
diff --git a/src/core/ext/census/mlog.c b/src/core/ext/census/mlog.cc
similarity index 100%
rename from src/core/ext/census/mlog.c
rename to src/core/ext/census/mlog.cc
diff --git a/src/core/ext/census/mlog.h b/src/core/ext/census/mlog.h
index 6f31259..7b4d392 100644
--- a/src/core/ext/census/mlog.h
+++ b/src/core/ext/census/mlog.h
@@ -28,6 +28,10 @@
 #define CENSUS_LOG_2_MAX_RECORD_SIZE 14 /* 2^14 = 16KB */
 #define CENSUS_LOG_MAX_RECORD_SIZE (1 << CENSUS_LOG_2_MAX_RECORD_SIZE)
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Initialize the statistics logging subsystem with the given log size. A log
    size of 0 will result in the smallest possible log for the platform
    (approximately CENSUS_LOG_MAX_RECORD_SIZE * gpr_cpu_num_cores()). If
@@ -77,4 +81,8 @@
    out-of-space. */
 int64_t census_log_out_of_space_count(void);
 
-#endif /* GRPC_CORE_EXT_CENSUS_MLOG_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_CENSUS_MLOG_H */
\ No newline at end of file
diff --git a/src/core/ext/census/operation.c b/src/core/ext/census/operation.cc
similarity index 100%
rename from src/core/ext/census/operation.c
rename to src/core/ext/census/operation.cc
diff --git a/src/core/ext/census/placeholders.c b/src/core/ext/census/placeholders.cc
similarity index 100%
rename from src/core/ext/census/placeholders.c
rename to src/core/ext/census/placeholders.cc
diff --git a/src/core/ext/census/resource.c b/src/core/ext/census/resource.cc
similarity index 100%
rename from src/core/ext/census/resource.c
rename to src/core/ext/census/resource.cc
diff --git a/src/core/ext/census/resource.h b/src/core/ext/census/resource.h
index b8bda2c..5f7ac2a 100644
--- a/src/core/ext/census/resource.h
+++ b/src/core/ext/census/resource.h
@@ -23,6 +23,10 @@
 #include <grpc/grpc.h>
 #include "src/core/ext/census/gen/census.pb.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Internal representation of a resource. */
 typedef struct {
   char *name;
@@ -45,4 +49,8 @@
    from configuration files. */
 int32_t define_resource(const resource *base);
 
-#endif /* GRPC_CORE_EXT_CENSUS_RESOURCE_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_CENSUS_RESOURCE_H */
\ No newline at end of file
diff --git a/src/core/ext/census/trace_context.c b/src/core/ext/census/trace_context.cc
similarity index 100%
rename from src/core/ext/census/trace_context.c
rename to src/core/ext/census/trace_context.cc
diff --git a/src/core/ext/census/trace_context.h b/src/core/ext/census/trace_context.h
index a7233e6..c707c63 100644
--- a/src/core/ext/census/trace_context.h
+++ b/src/core/ext/census/trace_context.h
@@ -39,6 +39,10 @@
 1 byte for is_sampled (bool) */
 #define TRACE_MAX_CONTEXT_SIZE 31
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Encode a trace context (ctxt) into proto format to the buffer provided.  The
 size of buffer must be at least TRACE_MAX_CONTEXT_SIZE.  On success, returns the
 number of bytes successfully encoded into buffer.  On failure, returns 0. */
@@ -53,4 +57,8 @@
 bool decode_trace_context(google_trace_TraceContext *ctxt, uint8_t *buffer,
                           const size_t nbytes);
 
-#endif /* GRPC_CORE_EXT_CENSUS_TRACE_CONTEXT_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_CENSUS_TRACE_CONTEXT_H */
\ No newline at end of file
diff --git a/src/core/ext/census/trace_propagation.h b/src/core/ext/census/trace_propagation.h
index eecfcb7..3394e9e 100644
--- a/src/core/ext/census/trace_propagation.h
+++ b/src/core/ext/census/trace_propagation.h
@@ -21,6 +21,10 @@
 
 #include "src/core/ext/census/tracing.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Encoding and decoding functions for receiving and sending trace contexts
    over the wire.  Only RPC libraries should be calling these
    functions.  These functions return the number of bytes encoded/decoded
@@ -45,4 +49,8 @@
 size_t http_format_to_trace_span_context(const char *buf, size_t buf_size,
                                          trace_span_context *ctxt);
 
-#endif /* GRPC_CORE_EXT_CENSUS_TRACE_PROPAGATION_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_CENSUS_TRACE_PROPAGATION_H */
\ No newline at end of file
diff --git a/src/core/ext/census/tracing.c b/src/core/ext/census/tracing.cc
similarity index 100%
rename from src/core/ext/census/tracing.c
rename to src/core/ext/census/tracing.cc
diff --git a/src/core/ext/census/tracing.h b/src/core/ext/census/tracing.h
index 038c9e2..5fcbb1e 100644
--- a/src/core/ext/census/tracing.h
+++ b/src/core/ext/census/tracing.h
@@ -25,6 +25,10 @@
 #include "src/core/ext/census/trace_label.h"
 #include "src/core/ext/census/trace_status.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* This is the low level tracing API that other languages will interface with.
    This is not intended to be accessed by the end-user, therefore it has been
    designed with performance in mind rather than ease of use. */
@@ -106,4 +110,8 @@
 optionally be NULL. */
 void trace_end_span(const trace_status *status, trace_span_context *span_ctxt);
 
-#endif /* GRPC_CORE_EXT_CENSUS_TRACING_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_CENSUS_TRACING_H */
\ No newline at end of file
diff --git a/src/core/ext/census/window_stats.c b/src/core/ext/census/window_stats.cc
similarity index 100%
rename from src/core/ext/census/window_stats.c
rename to src/core/ext/census/window_stats.cc
diff --git a/src/core/ext/census/window_stats.h b/src/core/ext/census/window_stats.h
index ebe3732..3b1d197 100644
--- a/src/core/ext/census/window_stats.h
+++ b/src/core/ext/census/window_stats.h
@@ -21,6 +21,10 @@
 
 #include <grpc/support/time.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Keep rolling sums of a user-defined statistic (containing a number of
    measurements) over a a number of time intervals ("windows"). For example,
    you can use a window_stats object to answer questions such as
@@ -155,4 +159,8 @@
    assertion failure). This function is thread-compatible. */
 void census_window_stats_destroy(struct census_window_stats *wstats);
 
-#endif /* GRPC_CORE_EXT_CENSUS_WINDOW_STATS_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_CENSUS_WINDOW_STATS_H */
\ No newline at end of file
diff --git a/src/core/ext/filters/client_channel/channel_connectivity.c b/src/core/ext/filters/client_channel/channel_connectivity.cc
similarity index 99%
rename from src/core/ext/filters/client_channel/channel_connectivity.c
rename to src/core/ext/filters/client_channel/channel_connectivity.cc
index 3844b98..a05a11d 100644
--- a/src/core/ext/filters/client_channel/channel_connectivity.c
+++ b/src/core/ext/filters/client_channel/channel_connectivity.cc
@@ -18,6 +18,8 @@
 
 #include "src/core/lib/surface/channel.h"
 
+#include <inttypes.h>
+
 #include <grpc/support/alloc.h>
 #include <grpc/support/log.h>
 
diff --git a/src/core/ext/filters/client_channel/client_channel.c b/src/core/ext/filters/client_channel/client_channel.cc
similarity index 98%
rename from src/core/ext/filters/client_channel/client_channel.c
rename to src/core/ext/filters/client_channel/client_channel.cc
index 016199b..8bff754 100644
--- a/src/core/ext/filters/client_channel/client_channel.c
+++ b/src/core/ext/filters/client_channel/client_channel.cc
@@ -16,8 +16,11 @@
  *
  */
 
+#include <grpc/support/port_platform.h>
+
 #include "src/core/ext/filters/client_channel/client_channel.h"
 
+#include <inttypes.h>
 #include <stdbool.h>
 #include <stdio.h>
 #include <string.h>
@@ -995,13 +998,14 @@
   channel_data *chand = (channel_data *)elem->channel_data;
   call_data *calld = (call_data *)elem->call_data;
   const grpc_connected_subchannel_call_args call_args = {
-      .pollent = calld->pollent,
-      .path = calld->path,
-      .start_time = calld->call_start_time,
-      .deadline = calld->deadline,
-      .arena = calld->arena,
-      .context = calld->subchannel_call_context,
-      .call_combiner = calld->call_combiner};
+      calld->pollent,                  // pollent
+      calld->path,                     // path
+      calld->call_start_time,          // start_time
+      calld->deadline,                 // deadline
+      calld->arena,                    // arena
+      calld->subchannel_call_context,  // context
+      calld->call_combiner             // call_combiner
+  };
   grpc_error *new_error = grpc_connected_subchannel_create_call(
       exec_ctx, calld->connected_subchannel, &call_args,
       &calld->subchannel_call);
diff --git a/src/core/ext/filters/client_channel/client_channel.h b/src/core/ext/filters/client_channel/client_channel.h
index c99f009..b32f378 100644
--- a/src/core/ext/filters/client_channel/client_channel.h
+++ b/src/core/ext/filters/client_channel/client_channel.h
@@ -28,6 +28,10 @@
 // Channel arg key for server URI string.
 #define GRPC_ARG_SERVER_URI "grpc.server_uri"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* A client channel is a channel that begins disconnected, and can connect
    to some endpoint on demand. If that endpoint disconnects, it will be
    connected to again later.
@@ -52,4 +56,8 @@
 grpc_subchannel_call *grpc_client_channel_get_subchannel_call(
     grpc_call_element *elem);
 
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_H */
\ No newline at end of file
diff --git a/src/core/ext/filters/client_channel/client_channel_factory.c b/src/core/ext/filters/client_channel/client_channel_factory.cc
similarity index 100%
rename from src/core/ext/filters/client_channel/client_channel_factory.c
rename to src/core/ext/filters/client_channel/client_channel_factory.cc
diff --git a/src/core/ext/filters/client_channel/client_channel_factory.h b/src/core/ext/filters/client_channel/client_channel_factory.h
index ce6266c..bad8b97 100644
--- a/src/core/ext/filters/client_channel/client_channel_factory.h
+++ b/src/core/ext/filters/client_channel/client_channel_factory.h
@@ -27,6 +27,10 @@
 // Channel arg key for client channel factory.
 #define GRPC_ARG_CLIENT_CHANNEL_FACTORY "grpc.client_channel_factory"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct grpc_client_channel_factory grpc_client_channel_factory;
 typedef struct grpc_client_channel_factory_vtable
     grpc_client_channel_factory_vtable;
@@ -74,4 +78,8 @@
 grpc_arg grpc_client_channel_factory_create_channel_arg(
     grpc_client_channel_factory *factory);
 
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_FACTORY_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_FACTORY_H */
\ No newline at end of file
diff --git a/src/core/ext/filters/client_channel/client_channel_plugin.c b/src/core/ext/filters/client_channel/client_channel_plugin.cc
similarity index 96%
rename from src/core/ext/filters/client_channel/client_channel_plugin.c
rename to src/core/ext/filters/client_channel/client_channel_plugin.cc
index 1f71c5a..4431d11 100644
--- a/src/core/ext/filters/client_channel/client_channel_plugin.c
+++ b/src/core/ext/filters/client_channel/client_channel_plugin.cc
@@ -65,7 +65,7 @@
   return true;
 }
 
-void grpc_client_channel_init(void) {
+extern "C" void grpc_client_channel_init(void) {
   grpc_lb_policy_registry_init();
   grpc_resolver_registry_init();
   grpc_retry_throttle_map_init();
@@ -84,7 +84,7 @@
 #endif
 }
 
-void grpc_client_channel_shutdown(void) {
+extern "C" void grpc_client_channel_shutdown(void) {
   grpc_subchannel_index_shutdown();
   grpc_channel_init_shutdown();
   grpc_proxy_mapper_registry_shutdown();
diff --git a/src/core/ext/filters/client_channel/connector.c b/src/core/ext/filters/client_channel/connector.cc
similarity index 100%
rename from src/core/ext/filters/client_channel/connector.c
rename to src/core/ext/filters/client_channel/connector.cc
diff --git a/src/core/ext/filters/client_channel/connector.h b/src/core/ext/filters/client_channel/connector.h
index 7f3d4a1..79ccb0d 100644
--- a/src/core/ext/filters/client_channel/connector.h
+++ b/src/core/ext/filters/client_channel/connector.h
@@ -23,6 +23,10 @@
 #include "src/core/lib/iomgr/resolve_address.h"
 #include "src/core/lib/transport/transport.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct grpc_connector grpc_connector;
 typedef struct grpc_connector_vtable grpc_connector_vtable;
 
@@ -70,4 +74,8 @@
 void grpc_connector_shutdown(grpc_exec_ctx *exec_ctx, grpc_connector *connector,
                              grpc_error *why);
 
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CONNECTOR_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CONNECTOR_H */
\ No newline at end of file
diff --git a/src/core/ext/filters/client_channel/http_connect_handshaker.c b/src/core/ext/filters/client_channel/http_connect_handshaker.cc
similarity index 100%
rename from src/core/ext/filters/client_channel/http_connect_handshaker.c
rename to src/core/ext/filters/client_channel/http_connect_handshaker.cc
diff --git a/src/core/ext/filters/client_channel/http_connect_handshaker.h b/src/core/ext/filters/client_channel/http_connect_handshaker.h
index 928a23d..5042c61 100644
--- a/src/core/ext/filters/client_channel/http_connect_handshaker.h
+++ b/src/core/ext/filters/client_channel/http_connect_handshaker.h
@@ -28,7 +28,15 @@
 /// seperated by colons.
 #define GRPC_ARG_HTTP_CONNECT_HEADERS "grpc.http_connect_headers"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /// Registers handshaker factory.
 void grpc_http_connect_register_handshaker_factory();
 
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HTTP_CONNECT_HANDSHAKER_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HTTP_CONNECT_HANDSHAKER_H */
\ No newline at end of file
diff --git a/src/core/ext/filters/client_channel/http_proxy.c b/src/core/ext/filters/client_channel/http_proxy.cc
similarity index 100%
rename from src/core/ext/filters/client_channel/http_proxy.c
rename to src/core/ext/filters/client_channel/http_proxy.cc
diff --git a/src/core/ext/filters/client_channel/http_proxy.h b/src/core/ext/filters/client_channel/http_proxy.h
index 3469493..65d5233 100644
--- a/src/core/ext/filters/client_channel/http_proxy.h
+++ b/src/core/ext/filters/client_channel/http_proxy.h
@@ -19,6 +19,14 @@
 #ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HTTP_PROXY_H
 #define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HTTP_PROXY_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 void grpc_register_http_proxy_mapper();
 
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HTTP_PROXY_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HTTP_PROXY_H */
\ No newline at end of file
diff --git a/src/core/ext/filters/client_channel/lb_policy.c b/src/core/ext/filters/client_channel/lb_policy.cc
similarity index 100%
rename from src/core/ext/filters/client_channel/lb_policy.c
rename to src/core/ext/filters/client_channel/lb_policy.cc
diff --git a/src/core/ext/filters/client_channel/lb_policy.h b/src/core/ext/filters/client_channel/lb_policy.h
index 645d51e..010299c 100644
--- a/src/core/ext/filters/client_channel/lb_policy.h
+++ b/src/core/ext/filters/client_channel/lb_policy.h
@@ -23,6 +23,10 @@
 #include "src/core/lib/iomgr/polling_entity.h"
 #include "src/core/lib/transport/connectivity_state.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /** A load balancing policy: specified by a vtable and a struct (which
     is expected to be extended to contain some parameters) */
 typedef struct grpc_lb_policy grpc_lb_policy;
@@ -204,4 +208,8 @@
                                   grpc_lb_policy *policy,
                                   const grpc_lb_policy_args *lb_policy_args);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_H */
diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c b/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc
similarity index 100%
rename from src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c
rename to src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc
diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h b/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h
index 51e30b2..c6a0d69 100644
--- a/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h
+++ b/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h
@@ -21,7 +21,15 @@
 
 #include "src/core/lib/channel/channel_stack.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 extern const grpc_channel_filter grpc_client_load_reporting_filter;
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_CLIENT_LOAD_REPORTING_FILTER_H \
           */
diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc
similarity index 99%
rename from src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c
rename to src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc
index 8dc81b4..d8e314d 100644
--- a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c
+++ b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc
@@ -80,6 +80,7 @@
    headers. Therefore, sockaddr.h must always be included first */
 #include "src/core/lib/iomgr/sockaddr.h"
 
+#include <inttypes.h>
 #include <limits.h>
 #include <string.h>
 
@@ -456,11 +457,11 @@
 static void *lb_token_copy(void *token) {
   return token == NULL
              ? NULL
-             : (void *)GRPC_MDELEM_REF((grpc_mdelem){(uintptr_t)token}).payload;
+             : (void *)GRPC_MDELEM_REF(grpc_mdelem{(uintptr_t)token}).payload;
 }
 static void lb_token_destroy(grpc_exec_ctx *exec_ctx, void *token) {
   if (token != NULL) {
-    GRPC_MDELEM_UNREF(exec_ctx, (grpc_mdelem){(uintptr_t)token});
+    GRPC_MDELEM_UNREF(exec_ctx, grpc_mdelem{(uintptr_t)token});
   }
 }
 static int lb_token_cmp(void *token1, void *token2) {
@@ -1925,12 +1926,11 @@
 
   arg = grpc_channel_args_find(args->args, GRPC_ARG_GRPCLB_CALL_TIMEOUT_MS);
   glb_policy->lb_call_timeout_ms =
-      grpc_channel_arg_get_integer(arg, (grpc_integer_options){0, 0, INT_MAX});
+      grpc_channel_arg_get_integer(arg, {0, 0, INT_MAX});
 
   arg = grpc_channel_args_find(args->args, GRPC_ARG_GRPCLB_FALLBACK_TIMEOUT_MS);
   glb_policy->lb_fallback_timeout_ms = grpc_channel_arg_get_integer(
-      arg, (grpc_integer_options){GRPC_GRPCLB_DEFAULT_FALLBACK_TIMEOUT_MS, 0,
-                                  INT_MAX});
+      arg, {GRPC_GRPCLB_DEFAULT_FALLBACK_TIMEOUT_MS, 0, INT_MAX});
 
   // Make sure that GRPC_ARG_LB_POLICY_NAME is set in channel args,
   // since we use this to trigger the client_load_reporting filter.
@@ -2006,7 +2006,7 @@
   return true;
 }
 
-void grpc_lb_policy_grpclb_init() {
+extern "C" void grpc_lb_policy_grpclb_init() {
   grpc_register_lb_policy(grpc_glb_lb_factory_create());
   grpc_register_tracer(&grpc_lb_glb_trace);
 #ifndef NDEBUG
@@ -2018,4 +2018,4 @@
                                    (void *)&grpc_client_load_reporting_filter);
 }
 
-void grpc_lb_policy_grpclb_shutdown() {}
+extern "C" void grpc_lb_policy_grpclb_shutdown() {}
diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h
index 63ad66c..c67df60 100644
--- a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h
+++ b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h
@@ -21,9 +21,17 @@
 
 #include "src/core/ext/filters/client_channel/lb_policy_factory.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /** Returns a load balancing factory for the glb policy, which tries to connect
  * to a load balancing server to decide the next successfully connected
  * subchannel to pick. */
 grpc_lb_policy_factory *grpc_glb_lb_factory_create();
 
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_GRPCLB_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_GRPCLB_H */
\ No newline at end of file
diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.c b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.cc
similarity index 100%
rename from src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.c
rename to src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.cc
diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h
index 6120bf5..e8599d1 100644
--- a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h
+++ b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h
@@ -23,6 +23,10 @@
 #include "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h"
 #include "src/core/lib/slice/slice_hash_table.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /** Create the channel used for communicating with an LB service.
  * Note that an LB *service* may be comprised of several LB *servers*.
  *
@@ -40,5 +44,9 @@
     grpc_fake_resolver_response_generator *response_generator,
     const grpc_channel_args *args);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_GRPCLB_CHANNEL_H \
           */
diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc
similarity index 100%
rename from src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c
rename to src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc
diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc
similarity index 100%
rename from src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c
rename to src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc
diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h
index c51e2a4..b38c076 100644
--- a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h
+++ b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h
@@ -23,6 +23,10 @@
 
 #include <grpc/impl/codegen/grpc_types.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct grpc_grpclb_client_stats grpc_grpclb_client_stats;
 
 typedef struct {
@@ -61,5 +65,9 @@
 void grpc_grpclb_dropped_call_counts_destroy(
     grpc_grpclb_dropped_call_counts* drop_entries);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_GRPCLB_CLIENT_STATS_H \
           */
diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c b/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc
similarity index 100%
rename from src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c
rename to src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc
diff --git a/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c b/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc
similarity index 99%
rename from src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c
rename to src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc
index d20cbb8..b07fc3b 100644
--- a/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c
+++ b/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc
@@ -706,9 +706,9 @@
 
 /* Plugin registration */
 
-void grpc_lb_policy_pick_first_init() {
+extern "C" void grpc_lb_policy_pick_first_init() {
   grpc_register_lb_policy(pick_first_lb_factory_create());
   grpc_register_tracer(&grpc_lb_pick_first_trace);
 }
 
-void grpc_lb_policy_pick_first_shutdown() {}
+extern "C" void grpc_lb_policy_pick_first_shutdown() {}
diff --git a/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c b/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc
similarity index 99%
rename from src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c
rename to src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc
index a3a62e9..6812bb5 100644
--- a/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c
+++ b/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc
@@ -916,9 +916,9 @@
 
 /* Plugin registration */
 
-void grpc_lb_policy_round_robin_init() {
+extern "C" void grpc_lb_policy_round_robin_init() {
   grpc_register_lb_policy(round_robin_lb_factory_create());
   grpc_register_tracer(&grpc_lb_round_robin_trace);
 }
 
-void grpc_lb_policy_round_robin_shutdown() {}
+extern "C" void grpc_lb_policy_round_robin_shutdown() {}
diff --git a/src/core/ext/filters/client_channel/lb_policy_factory.c b/src/core/ext/filters/client_channel/lb_policy_factory.cc
similarity index 100%
rename from src/core/ext/filters/client_channel/lb_policy_factory.c
rename to src/core/ext/filters/client_channel/lb_policy_factory.cc
diff --git a/src/core/ext/filters/client_channel/lb_policy_factory.h b/src/core/ext/filters/client_channel/lb_policy_factory.h
index cf0f8cb..69bcba4 100644
--- a/src/core/ext/filters/client_channel/lb_policy_factory.h
+++ b/src/core/ext/filters/client_channel/lb_policy_factory.h
@@ -29,6 +29,10 @@
 // Channel arg key for grpc_lb_addresses.
 #define GRPC_ARG_LB_ADDRESSES "grpc.lb_addresses"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct grpc_lb_policy_factory grpc_lb_policy_factory;
 typedef struct grpc_lb_policy_factory_vtable grpc_lb_policy_factory_vtable;
 
@@ -130,4 +134,8 @@
     grpc_exec_ctx *exec_ctx, grpc_lb_policy_factory *factory,
     grpc_lb_policy_args *args);
 
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_FACTORY_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_FACTORY_H */
\ No newline at end of file
diff --git a/src/core/ext/filters/client_channel/lb_policy_registry.c b/src/core/ext/filters/client_channel/lb_policy_registry.cc
similarity index 100%
rename from src/core/ext/filters/client_channel/lb_policy_registry.c
rename to src/core/ext/filters/client_channel/lb_policy_registry.cc
diff --git a/src/core/ext/filters/client_channel/lb_policy_registry.h b/src/core/ext/filters/client_channel/lb_policy_registry.h
index f599568..0867844 100644
--- a/src/core/ext/filters/client_channel/lb_policy_registry.h
+++ b/src/core/ext/filters/client_channel/lb_policy_registry.h
@@ -22,6 +22,10 @@
 #include "src/core/ext/filters/client_channel/lb_policy_factory.h"
 #include "src/core/lib/iomgr/exec_ctx.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /** Initialize the registry and set \a default_factory as the factory to be
  * returned when no name is provided in a lookup */
 void grpc_lb_policy_registry_init(void);
@@ -37,4 +41,8 @@
 grpc_lb_policy *grpc_lb_policy_create(grpc_exec_ctx *exec_ctx, const char *name,
                                       grpc_lb_policy_args *args);
 
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_REGISTRY_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_REGISTRY_H */
\ No newline at end of file
diff --git a/src/core/ext/filters/client_channel/parse_address.c b/src/core/ext/filters/client_channel/parse_address.cc
similarity index 100%
rename from src/core/ext/filters/client_channel/parse_address.c
rename to src/core/ext/filters/client_channel/parse_address.cc
diff --git a/src/core/ext/filters/client_channel/parse_address.h b/src/core/ext/filters/client_channel/parse_address.h
index c90a827..742df38 100644
--- a/src/core/ext/filters/client_channel/parse_address.h
+++ b/src/core/ext/filters/client_channel/parse_address.h
@@ -24,6 +24,10 @@
 #include "src/core/ext/filters/client_channel/uri_parser.h"
 #include "src/core/lib/iomgr/resolve_address.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /** Populate \a resolved_addr from \a uri, whose path is expected to contain a
  * unix socket path. Returns true upon success. */
 bool grpc_parse_unix(const grpc_uri *uri, grpc_resolved_address *resolved_addr);
@@ -45,4 +49,8 @@
 bool grpc_parse_ipv6_hostport(const char *hostport, grpc_resolved_address *addr,
                               bool log_errors);
 
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PARSE_ADDRESS_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PARSE_ADDRESS_H */
\ No newline at end of file
diff --git a/src/core/ext/filters/client_channel/proxy_mapper.c b/src/core/ext/filters/client_channel/proxy_mapper.cc
similarity index 100%
rename from src/core/ext/filters/client_channel/proxy_mapper.c
rename to src/core/ext/filters/client_channel/proxy_mapper.cc
diff --git a/src/core/ext/filters/client_channel/proxy_mapper.h b/src/core/ext/filters/client_channel/proxy_mapper.h
index a13861c..1325a9f 100644
--- a/src/core/ext/filters/client_channel/proxy_mapper.h
+++ b/src/core/ext/filters/client_channel/proxy_mapper.h
@@ -25,6 +25,10 @@
 
 #include "src/core/lib/iomgr/resolve_address.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct grpc_proxy_mapper grpc_proxy_mapper;
 
 typedef struct {
@@ -71,4 +75,8 @@
 
 void grpc_proxy_mapper_destroy(grpc_proxy_mapper* mapper);
 
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PROXY_MAPPER_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PROXY_MAPPER_H */
\ No newline at end of file
diff --git a/src/core/ext/filters/client_channel/proxy_mapper_registry.c b/src/core/ext/filters/client_channel/proxy_mapper_registry.cc
similarity index 100%
rename from src/core/ext/filters/client_channel/proxy_mapper_registry.c
rename to src/core/ext/filters/client_channel/proxy_mapper_registry.cc
diff --git a/src/core/ext/filters/client_channel/proxy_mapper_registry.h b/src/core/ext/filters/client_channel/proxy_mapper_registry.h
index 99e54d1..2d389f1 100644
--- a/src/core/ext/filters/client_channel/proxy_mapper_registry.h
+++ b/src/core/ext/filters/client_channel/proxy_mapper_registry.h
@@ -21,6 +21,10 @@
 
 #include "src/core/ext/filters/client_channel/proxy_mapper.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 void grpc_proxy_mapper_registry_init();
 void grpc_proxy_mapper_registry_shutdown();
 
@@ -41,4 +45,8 @@
                                     grpc_resolved_address** new_address,
                                     grpc_channel_args** new_args);
 
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PROXY_MAPPER_REGISTRY_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PROXY_MAPPER_REGISTRY_H */
\ No newline at end of file
diff --git a/src/core/ext/filters/client_channel/resolver.c b/src/core/ext/filters/client_channel/resolver.cc
similarity index 100%
rename from src/core/ext/filters/client_channel/resolver.c
rename to src/core/ext/filters/client_channel/resolver.cc
diff --git a/src/core/ext/filters/client_channel/resolver.h b/src/core/ext/filters/client_channel/resolver.h
index ae9c8f6..73fbbbb 100644
--- a/src/core/ext/filters/client_channel/resolver.h
+++ b/src/core/ext/filters/client_channel/resolver.h
@@ -22,6 +22,10 @@
 #include "src/core/ext/filters/client_channel/subchannel.h"
 #include "src/core/lib/iomgr/iomgr.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct grpc_resolver grpc_resolver;
 typedef struct grpc_resolver_vtable grpc_resolver_vtable;
 
@@ -87,4 +91,8 @@
                                grpc_channel_args **result,
                                grpc_closure *on_complete);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_H */
diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c b/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc
similarity index 98%
rename from src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c
rename to src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc
index 9bb229a..69f5877 100644
--- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c
+++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc
@@ -425,7 +425,7 @@
   return &dns_resolver_factory;
 }
 
-void grpc_resolver_dns_ares_init(void) {
+extern "C" void grpc_resolver_dns_ares_init(void) {
   char *resolver = gpr_getenv("GRPC_DNS_RESOLVER");
   /* TODO(zyc): Turn on c-ares based resolver by default after the address
      sorter and the CNAME support are added. */
@@ -441,7 +441,7 @@
   gpr_free(resolver);
 }
 
-void grpc_resolver_dns_ares_shutdown(void) {
+extern "C" void grpc_resolver_dns_ares_shutdown(void) {
   char *resolver = gpr_getenv("GRPC_DNS_RESOLVER");
   if (resolver != NULL && gpr_stricmp(resolver, "ares") == 0) {
     grpc_ares_cleanup();
@@ -451,8 +451,8 @@
 
 #else /* GRPC_ARES == 1 && !defined(GRPC_UV) */
 
-void grpc_resolver_dns_ares_init(void) {}
+extern "C" void grpc_resolver_dns_ares_init(void) {}
 
-void grpc_resolver_dns_ares_shutdown(void) {}
+extern "C" void grpc_resolver_dns_ares_shutdown(void) {}
 
 #endif /* GRPC_ARES == 1 && !defined(GRPC_UV) */
diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h
index 386012d..3d4309f 100644
--- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h
+++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h
@@ -22,6 +22,10 @@
 #include "src/core/lib/iomgr/exec_ctx.h"
 #include "src/core/lib/iomgr/pollset_set.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct grpc_ares_ev_driver grpc_ares_ev_driver;
 
 /* Start \a ev_driver. It will keep working until all IO on its ares_channel is
@@ -49,5 +53,9 @@
 void grpc_ares_ev_driver_shutdown(grpc_exec_ctx *exec_ctx,
                                   grpc_ares_ev_driver *ev_driver);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_DNS_C_ARES_GRPC_ARES_EV_DRIVER_H \
           */
diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc
similarity index 100%
rename from src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c
rename to src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc
diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc
similarity index 100%
rename from src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c
rename to src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc
diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h
index 1083330..38fbea9 100644
--- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h
+++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h
@@ -25,6 +25,10 @@
 #include "src/core/lib/iomgr/polling_entity.h"
 #include "src/core/lib/iomgr/resolve_address.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct grpc_ares_request grpc_ares_request;
 
 /* Asynchronously resolve \a name. Use \a default_port if a port isn't
@@ -65,5 +69,9 @@
    it has been called the same number of times as grpc_ares_init(). */
 void grpc_ares_cleanup(void);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_DNS_C_ARES_GRPC_ARES_WRAPPER_H \
           */
diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc
similarity index 100%
rename from src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c
rename to src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc
diff --git a/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c b/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc
similarity index 98%
rename from src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c
rename to src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc
index 5ea75f0..1c093d0 100644
--- a/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c
+++ b/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc
@@ -16,6 +16,9 @@
  *
  */
 
+#include <grpc/support/port_platform.h>
+
+#include <inttypes.h>
 #include <string.h>
 
 #include <grpc/support/alloc.h>
@@ -289,7 +292,7 @@
   return &dns_resolver_factory;
 }
 
-void grpc_resolver_dns_native_init(void) {
+extern "C" void grpc_resolver_dns_native_init(void) {
   char *resolver = gpr_getenv("GRPC_DNS_RESOLVER");
   if (resolver != NULL && gpr_stricmp(resolver, "native") == 0) {
     gpr_log(GPR_DEBUG, "Using native dns resolver");
@@ -307,4 +310,4 @@
   gpr_free(resolver);
 }
 
-void grpc_resolver_dns_native_shutdown(void) {}
+extern "C" void grpc_resolver_dns_native_shutdown(void) {}
diff --git a/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c b/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc
similarity index 98%
rename from src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c
rename to src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc
index 69ea440..ed5b101 100644
--- a/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c
+++ b/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc
@@ -258,8 +258,8 @@
 static grpc_resolver_factory fake_resolver_factory = {
     &fake_resolver_factory_vtable};
 
-void grpc_resolver_fake_init(void) {
+extern "C" void grpc_resolver_fake_init(void) {
   grpc_register_resolver_type(&fake_resolver_factory);
 }
 
-void grpc_resolver_fake_shutdown(void) {}
+extern "C" void grpc_resolver_fake_shutdown(void) {}
diff --git a/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h b/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h
index c084ef2..95c3baf 100644
--- a/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h
+++ b/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h
@@ -21,6 +21,10 @@
 #include "src/core/ext/filters/client_channel/uri_parser.h"
 #include "src/core/lib/channel/channel_args.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #define GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR \
   "grpc.fake_resolver.response_generator"
 
@@ -56,5 +60,9 @@
 void grpc_fake_resolver_response_generator_unref(
     grpc_fake_resolver_response_generator* generator);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_FAKE_FAKE_RESOLVER_H \
           */
diff --git a/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c b/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc
similarity index 98%
rename from src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c
rename to src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc
index 7ceb8f4..dda9542 100644
--- a/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c
+++ b/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc
@@ -211,7 +211,7 @@
 DECL_FACTORY(ipv4);
 DECL_FACTORY(ipv6);
 
-void grpc_resolver_sockaddr_init(void) {
+extern "C" void grpc_resolver_sockaddr_init(void) {
   grpc_register_resolver_type(&ipv4_resolver_factory);
   grpc_register_resolver_type(&ipv6_resolver_factory);
 #ifdef GRPC_HAVE_UNIX_SOCKET
@@ -219,4 +219,4 @@
 #endif
 }
 
-void grpc_resolver_sockaddr_shutdown(void) {}
+extern "C" void grpc_resolver_sockaddr_shutdown(void) {}
diff --git a/src/core/ext/filters/client_channel/resolver_factory.c b/src/core/ext/filters/client_channel/resolver_factory.cc
similarity index 100%
rename from src/core/ext/filters/client_channel/resolver_factory.c
rename to src/core/ext/filters/client_channel/resolver_factory.cc
diff --git a/src/core/ext/filters/client_channel/resolver_factory.h b/src/core/ext/filters/client_channel/resolver_factory.h
index 6bd7929..6e533e3 100644
--- a/src/core/ext/filters/client_channel/resolver_factory.h
+++ b/src/core/ext/filters/client_channel/resolver_factory.h
@@ -24,6 +24,10 @@
 #include "src/core/ext/filters/client_channel/uri_parser.h"
 #include "src/core/lib/iomgr/pollset_set.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct grpc_resolver_factory grpc_resolver_factory;
 typedef struct grpc_resolver_factory_vtable grpc_resolver_factory_vtable;
 
@@ -67,4 +71,8 @@
 char *grpc_resolver_factory_get_default_authority(
     grpc_resolver_factory *factory, grpc_uri *uri);
 
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_FACTORY_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_FACTORY_H */
\ No newline at end of file
diff --git a/src/core/ext/filters/client_channel/resolver_registry.c b/src/core/ext/filters/client_channel/resolver_registry.cc
similarity index 100%
rename from src/core/ext/filters/client_channel/resolver_registry.c
rename to src/core/ext/filters/client_channel/resolver_registry.cc
diff --git a/src/core/ext/filters/client_channel/resolver_registry.h b/src/core/ext/filters/client_channel/resolver_registry.h
index 6924905..eb08d88 100644
--- a/src/core/ext/filters/client_channel/resolver_registry.h
+++ b/src/core/ext/filters/client_channel/resolver_registry.h
@@ -22,6 +22,10 @@
 #include "src/core/ext/filters/client_channel/resolver_factory.h"
 #include "src/core/lib/iomgr/pollset_set.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 void grpc_resolver_registry_init();
 void grpc_resolver_registry_shutdown(void);
 
@@ -66,4 +70,8 @@
 char *grpc_resolver_factory_add_default_prefix_if_needed(
     grpc_exec_ctx *exec_ctx, const char *target);
 
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_REGISTRY_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_REGISTRY_H */
\ No newline at end of file
diff --git a/src/core/ext/filters/client_channel/retry_throttle.c b/src/core/ext/filters/client_channel/retry_throttle.cc
similarity index 100%
rename from src/core/ext/filters/client_channel/retry_throttle.c
rename to src/core/ext/filters/client_channel/retry_throttle.cc
diff --git a/src/core/ext/filters/client_channel/retry_throttle.h b/src/core/ext/filters/client_channel/retry_throttle.h
index bf99297..3b84947 100644
--- a/src/core/ext/filters/client_channel/retry_throttle.h
+++ b/src/core/ext/filters/client_channel/retry_throttle.h
@@ -21,6 +21,10 @@
 
 #include <stdbool.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /// Tracks retry throttling data for an individual server name.
 typedef struct grpc_server_retry_throttle_data grpc_server_retry_throttle_data;
 
@@ -47,4 +51,8 @@
 grpc_server_retry_throttle_data* grpc_retry_throttle_map_get_data_for_server(
     const char* server_name, int max_milli_tokens, int milli_token_ratio);
 
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RETRY_THROTTLE_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RETRY_THROTTLE_H */
\ No newline at end of file
diff --git a/src/core/ext/filters/client_channel/subchannel.c b/src/core/ext/filters/client_channel/subchannel.cc
similarity index 97%
rename from src/core/ext/filters/client_channel/subchannel.c
rename to src/core/ext/filters/client_channel/subchannel.cc
index 40a51c7..bff5001 100644
--- a/src/core/ext/filters/client_channel/subchannel.c
+++ b/src/core/ext/filters/client_channel/subchannel.cc
@@ -18,6 +18,7 @@
 
 #include "src/core/ext/filters/client_channel/subchannel.h"
 
+#include <inttypes.h>
 #include <limits.h>
 #include <string.h>
 
@@ -343,27 +344,23 @@
                       "grpc.testing.fixed_reconnect_backoff_ms")) {
         fixed_reconnect_backoff = true;
         initial_backoff_ms = min_backoff_ms = max_backoff_ms =
-            grpc_channel_arg_get_integer(
-                &c->args->args[i],
-                (grpc_integer_options){initial_backoff_ms, 100, INT_MAX});
+            grpc_channel_arg_get_integer(&c->args->args[i],
+                                         {initial_backoff_ms, 100, INT_MAX});
       } else if (0 == strcmp(c->args->args[i].key,
                              GRPC_ARG_MIN_RECONNECT_BACKOFF_MS)) {
         fixed_reconnect_backoff = false;
         min_backoff_ms = grpc_channel_arg_get_integer(
-            &c->args->args[i],
-            (grpc_integer_options){min_backoff_ms, 100, INT_MAX});
+            &c->args->args[i], {min_backoff_ms, 100, INT_MAX});
       } else if (0 == strcmp(c->args->args[i].key,
                              GRPC_ARG_MAX_RECONNECT_BACKOFF_MS)) {
         fixed_reconnect_backoff = false;
         max_backoff_ms = grpc_channel_arg_get_integer(
-            &c->args->args[i],
-            (grpc_integer_options){max_backoff_ms, 100, INT_MAX});
+            &c->args->args[i], {max_backoff_ms, 100, INT_MAX});
       } else if (0 == strcmp(c->args->args[i].key,
                              GRPC_ARG_INITIAL_RECONNECT_BACKOFF_MS)) {
         fixed_reconnect_backoff = false;
         initial_backoff_ms = grpc_channel_arg_get_integer(
-            &c->args->args[i],
-            (grpc_integer_options){initial_backoff_ms, 100, INT_MAX});
+            &c->args->args[i], {initial_backoff_ms, 100, INT_MAX});
       }
     }
   }
@@ -759,14 +756,15 @@
   grpc_call_stack *callstk = SUBCHANNEL_CALL_TO_CALL_STACK(*call);
   (*call)->connection = GRPC_CONNECTED_SUBCHANNEL_REF(con, "subchannel_call");
   const grpc_call_element_args call_args = {
-      .call_stack = callstk,
-      .server_transport_data = NULL,
-      .context = args->context,
-      .path = args->path,
-      .start_time = args->start_time,
-      .deadline = args->deadline,
-      .arena = args->arena,
-      .call_combiner = args->call_combiner};
+      callstk,            /* call_stack */
+      NULL,               /* server_transport_data */
+      args->context,      /* context */
+      args->path,         /* path */
+      args->start_time,   /* start_time */
+      args->deadline,     /* deadline */
+      args->arena,        /* arena */
+      args->call_combiner /* call_combiner */
+  };
   grpc_error *error = grpc_call_stack_init(
       exec_ctx, chanstk, 1, subchannel_call_destroy, *call, &call_args);
   if (error != GRPC_ERROR_NONE) {
diff --git a/src/core/ext/filters/client_channel/subchannel.h b/src/core/ext/filters/client_channel/subchannel.h
index 51d712f..c67ff97 100644
--- a/src/core/ext/filters/client_channel/subchannel.h
+++ b/src/core/ext/filters/client_channel/subchannel.h
@@ -26,6 +26,10 @@
 #include "src/core/lib/transport/connectivity_state.h"
 #include "src/core/lib/transport/metadata.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 // Channel arg containing a grpc_resolved_address to connect to.
 #define GRPC_ARG_SUBCHANNEL_ADDRESS "grpc.subchannel_address"
 
@@ -188,4 +192,8 @@
 /// Caller is responsible for freeing the string.
 grpc_arg grpc_create_subchannel_address_arg(const grpc_resolved_address *addr);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_H */
diff --git a/src/core/ext/filters/client_channel/subchannel_index.c b/src/core/ext/filters/client_channel/subchannel_index.cc
similarity index 97%
rename from src/core/ext/filters/client_channel/subchannel_index.c
rename to src/core/ext/filters/client_channel/subchannel_index.cc
index d7a51f3..1f466ec 100644
--- a/src/core/ext/filters/client_channel/subchannel_index.c
+++ b/src/core/ext/filters/client_channel/subchannel_index.cc
@@ -114,11 +114,12 @@
 }
 
 static const gpr_avl_vtable subchannel_avl_vtable = {
-    .destroy_key = sck_avl_destroy,
-    .copy_key = sck_avl_copy,
-    .compare_keys = sck_avl_compare,
-    .destroy_value = scv_avl_destroy,
-    .copy_value = scv_avl_copy};
+    sck_avl_destroy,  // destroy_key
+    sck_avl_copy,     // copy_key
+    sck_avl_compare,  // compare_keys
+    scv_avl_destroy,  // destroy_value
+    scv_avl_copy      // copy_value
+};
 
 void grpc_subchannel_index_init(void) {
   g_subchannel_index = gpr_avl_create(&subchannel_avl_vtable);
diff --git a/src/core/ext/filters/client_channel/subchannel_index.h b/src/core/ext/filters/client_channel/subchannel_index.h
index 92e36d5..09bac35 100644
--- a/src/core/ext/filters/client_channel/subchannel_index.h
+++ b/src/core/ext/filters/client_channel/subchannel_index.h
@@ -21,6 +21,10 @@
 
 #include "src/core/ext/filters/client_channel/subchannel.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /** \file Provides an index of active subchannels so that they can be
     shared amongst channels */
 
@@ -78,4 +82,8 @@
  * force_creation set. */
 void grpc_subchannel_index_test_only_set_force_creation(bool force_creation);
 
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INDEX_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INDEX_H */
\ No newline at end of file
diff --git a/src/core/ext/filters/client_channel/uri_parser.c b/src/core/ext/filters/client_channel/uri_parser.cc
similarity index 100%
rename from src/core/ext/filters/client_channel/uri_parser.c
rename to src/core/ext/filters/client_channel/uri_parser.cc
diff --git a/src/core/ext/filters/client_channel/uri_parser.h b/src/core/ext/filters/client_channel/uri_parser.h
index 05ca2e0..43e8ae6 100644
--- a/src/core/ext/filters/client_channel/uri_parser.h
+++ b/src/core/ext/filters/client_channel/uri_parser.h
@@ -22,6 +22,10 @@
 #include <stddef.h>
 #include "src/core/lib/iomgr/exec_ctx.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct {
   char *scheme;
   char *authority;
@@ -47,4 +51,8 @@
 /** destroy a uri */
 void grpc_uri_destroy(grpc_uri *uri);
 
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_URI_PARSER_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_URI_PARSER_H */
\ No newline at end of file
diff --git a/src/core/ext/filters/deadline/deadline_filter.c b/src/core/ext/filters/deadline/deadline_filter.cc
similarity index 98%
rename from src/core/ext/filters/deadline/deadline_filter.c
rename to src/core/ext/filters/deadline/deadline_filter.cc
index 1aed488..866ce46 100644
--- a/src/core/ext/filters/deadline/deadline_filter.c
+++ b/src/core/ext/filters/deadline/deadline_filter.cc
@@ -385,7 +385,7 @@
              : true;
 }
 
-void grpc_deadline_filter_init(void) {
+extern "C" void grpc_deadline_filter_init(void) {
   grpc_channel_init_register_stage(
       GRPC_CLIENT_DIRECT_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
       maybe_add_deadline_filter, (void*)&grpc_client_deadline_filter);
@@ -394,4 +394,4 @@
       maybe_add_deadline_filter, (void*)&grpc_server_deadline_filter);
 }
 
-void grpc_deadline_filter_shutdown(void) {}
+extern "C" void grpc_deadline_filter_shutdown(void) {}
diff --git a/src/core/ext/filters/deadline/deadline_filter.h b/src/core/ext/filters/deadline/deadline_filter.h
index 3eb102a..f4a1110 100644
--- a/src/core/ext/filters/deadline/deadline_filter.h
+++ b/src/core/ext/filters/deadline/deadline_filter.h
@@ -20,6 +20,10 @@
 #include "src/core/lib/channel/channel_stack.h"
 #include "src/core/lib/iomgr/timer.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef enum grpc_deadline_timer_state {
   GRPC_DEADLINE_STATE_INITIAL,
   GRPC_DEADLINE_STATE_PENDING,
@@ -89,4 +93,8 @@
 extern const grpc_channel_filter grpc_client_deadline_filter;
 extern const grpc_channel_filter grpc_server_deadline_filter;
 
-#endif /* GRPC_CORE_EXT_FILTERS_DEADLINE_DEADLINE_FILTER_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_FILTERS_DEADLINE_DEADLINE_FILTER_H */
\ No newline at end of file
diff --git a/src/core/ext/filters/http/client/http_client_filter.c b/src/core/ext/filters/http/client/http_client_filter.cc
similarity index 100%
rename from src/core/ext/filters/http/client/http_client_filter.c
rename to src/core/ext/filters/http/client/http_client_filter.cc
diff --git a/src/core/ext/filters/http/client/http_client_filter.h b/src/core/ext/filters/http/client/http_client_filter.h
index ec8177c..9ed8e76 100644
--- a/src/core/ext/filters/http/client/http_client_filter.h
+++ b/src/core/ext/filters/http/client/http_client_filter.h
@@ -20,10 +20,18 @@
 
 #include "src/core/lib/channel/channel_stack.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Processes metadata on the client side for HTTP2 transports */
 extern const grpc_channel_filter grpc_http_client_filter;
 
 /* Channel arg to determine maximum size of payload eligable for GET request */
 #define GRPC_ARG_MAX_PAYLOAD_SIZE_FOR_GET "grpc.max_payload_size_for_get"
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_FILTERS_HTTP_CLIENT_HTTP_CLIENT_FILTER_H */
diff --git a/src/core/ext/filters/http/http_filters_plugin.c b/src/core/ext/filters/http/http_filters_plugin.cc
similarity index 97%
rename from src/core/ext/filters/http/http_filters_plugin.c
rename to src/core/ext/filters/http/http_filters_plugin.cc
index 88bd225..8f5b856 100644
--- a/src/core/ext/filters/http/http_filters_plugin.c
+++ b/src/core/ext/filters/http/http_filters_plugin.cc
@@ -64,7 +64,7 @@
              : true;
 }
 
-void grpc_http_filters_init(void) {
+extern "C" void grpc_http_filters_init(void) {
   grpc_register_tracer(&grpc_compression_trace);
   grpc_channel_init_register_stage(GRPC_CLIENT_SUBCHANNEL,
                                    GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
@@ -86,4 +86,4 @@
       maybe_add_required_filter, (void *)&grpc_http_server_filter);
 }
 
-void grpc_http_filters_shutdown(void) {}
+extern "C" void grpc_http_filters_shutdown(void) {}
diff --git a/src/core/ext/filters/http/message_compress/message_compress_filter.c b/src/core/ext/filters/http/message_compress/message_compress_filter.cc
similarity index 100%
rename from src/core/ext/filters/http/message_compress/message_compress_filter.c
rename to src/core/ext/filters/http/message_compress/message_compress_filter.cc
diff --git a/src/core/ext/filters/http/message_compress/message_compress_filter.h b/src/core/ext/filters/http/message_compress/message_compress_filter.h
index c121a39..92771d9 100644
--- a/src/core/ext/filters/http/message_compress/message_compress_filter.h
+++ b/src/core/ext/filters/http/message_compress/message_compress_filter.h
@@ -23,6 +23,10 @@
 
 #include "src/core/lib/channel/channel_stack.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /** Compression filter for outgoing data.
  *
  * See <grpc/compression.h> for the available compression settings.
@@ -47,5 +51,9 @@
 
 extern const grpc_channel_filter grpc_message_compress_filter;
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_FILTERS_HTTP_MESSAGE_COMPRESS_MESSAGE_COMPRESS_FILTER_H \
           */
diff --git a/src/core/ext/filters/http/server/http_server_filter.c b/src/core/ext/filters/http/server/http_server_filter.cc
similarity index 100%
rename from src/core/ext/filters/http/server/http_server_filter.c
rename to src/core/ext/filters/http/server/http_server_filter.cc
diff --git a/src/core/ext/filters/http/server/http_server_filter.h b/src/core/ext/filters/http/server/http_server_filter.h
index c0f678a..4b38cc5 100644
--- a/src/core/ext/filters/http/server/http_server_filter.h
+++ b/src/core/ext/filters/http/server/http_server_filter.h
@@ -21,7 +21,15 @@
 
 #include "src/core/lib/channel/channel_stack.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Processes metadata on the client side for HTTP2 transports */
 extern const grpc_channel_filter grpc_http_server_filter;
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_FILTERS_HTTP_SERVER_HTTP_SERVER_FILTER_H */
diff --git a/src/core/ext/filters/load_reporting/server_load_reporting_filter.c b/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc
similarity index 100%
rename from src/core/ext/filters/load_reporting/server_load_reporting_filter.c
rename to src/core/ext/filters/load_reporting/server_load_reporting_filter.cc
diff --git a/src/core/ext/filters/load_reporting/server_load_reporting_filter.h b/src/core/ext/filters/load_reporting/server_load_reporting_filter.h
index 9527868..94d19cc 100644
--- a/src/core/ext/filters/load_reporting/server_load_reporting_filter.h
+++ b/src/core/ext/filters/load_reporting/server_load_reporting_filter.h
@@ -22,7 +22,15 @@
 #include "src/core/ext/filters/load_reporting/server_load_reporting_plugin.h"
 #include "src/core/lib/channel/channel_stack.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 extern const grpc_channel_filter grpc_server_load_reporting_filter;
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_FILTERS_LOAD_REPORTING_SERVER_LOAD_REPORTING_FILTER_H \
           */
diff --git a/src/core/ext/filters/load_reporting/server_load_reporting_plugin.c b/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc
similarity index 94%
rename from src/core/ext/filters/load_reporting/server_load_reporting_plugin.c
rename to src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc
index 2486ead..223fb3e 100644
--- a/src/core/ext/filters/load_reporting/server_load_reporting_plugin.c
+++ b/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc
@@ -61,10 +61,10 @@
 
 /* Plugin registration */
 
-void grpc_server_load_reporting_plugin_init(void) {
+extern "C" void grpc_server_load_reporting_plugin_init(void) {
   grpc_channel_init_register_stage(GRPC_SERVER_CHANNEL, INT_MAX,
                                    maybe_add_server_load_reporting_filter,
                                    (void *)&grpc_server_load_reporting_filter);
 }
 
-void grpc_server_load_reporting_plugin_shutdown() {}
+extern "C" void grpc_server_load_reporting_plugin_shutdown() {}
diff --git a/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h b/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h
index 65a6d09..65e254e 100644
--- a/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h
+++ b/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h
@@ -23,6 +23,10 @@
 
 #include "src/core/lib/channel/channel_stack.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /** Identifiers for the invocation point of the users LR callback */
 typedef enum grpc_load_reporting_source {
   GRPC_LR_POINT_UNKNOWN = 0,
@@ -55,5 +59,9 @@
 /** Return a \a grpc_arg enabling load reporting */
 grpc_arg grpc_load_reporting_enable_arg();
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_FILTERS_LOAD_REPORTING_SERVER_LOAD_REPORTING_PLUGIN_H \
           */
diff --git a/src/core/ext/filters/max_age/max_age_filter.c b/src/core/ext/filters/max_age/max_age_filter.cc
similarity index 97%
rename from src/core/ext/filters/max_age/max_age_filter.c
rename to src/core/ext/filters/max_age/max_age_filter.cc
index 0ac803e..f4d5b14 100644
--- a/src/core/ext/filters/max_age/max_age_filter.c
+++ b/src/core/ext/filters/max_age/max_age_filter.cc
@@ -33,9 +33,9 @@
 #define MAX_CONNECTION_AGE_JITTER 0.1
 
 #define MAX_CONNECTION_AGE_INTEGER_OPTIONS \
-  (grpc_integer_options) { DEFAULT_MAX_CONNECTION_AGE_MS, 1, INT_MAX }
+  { DEFAULT_MAX_CONNECTION_AGE_MS, 1, INT_MAX }
 #define MAX_CONNECTION_IDLE_INTEGER_OPTIONS \
-  (grpc_integer_options) { DEFAULT_MAX_CONNECTION_IDLE_MS, 1, INT_MAX }
+  { DEFAULT_MAX_CONNECTION_IDLE_MS, 1, INT_MAX }
 
 typedef struct channel_data {
   /* We take a reference to the channel stack for the timer callback */
@@ -315,8 +315,7 @@
                            GRPC_ARG_MAX_CONNECTION_AGE_GRACE_MS)) {
       const int value = grpc_channel_arg_get_integer(
           &args->channel_args->args[i],
-          (grpc_integer_options){DEFAULT_MAX_CONNECTION_AGE_GRACE_MS, 0,
-                                 INT_MAX});
+          {DEFAULT_MAX_CONNECTION_AGE_GRACE_MS, 0, INT_MAX});
       chand->max_connection_age_grace =
           value == INT_MAX ? gpr_inf_future(GPR_TIMESPAN)
                            : gpr_time_from_millis(value, GPR_TIMESPAN);
@@ -414,10 +413,10 @@
   }
 }
 
-void grpc_max_age_filter_init(void) {
+extern "C" void grpc_max_age_filter_init(void) {
   grpc_channel_init_register_stage(GRPC_SERVER_CHANNEL,
                                    GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
                                    maybe_add_max_age_filter, NULL);
 }
 
-void grpc_max_age_filter_shutdown(void) {}
+extern "C" void grpc_max_age_filter_shutdown(void) {}
diff --git a/src/core/ext/filters/max_age/max_age_filter.h b/src/core/ext/filters/max_age/max_age_filter.h
index 68fb4a4..eeeefd6 100644
--- a/src/core/ext/filters/max_age/max_age_filter.h
+++ b/src/core/ext/filters/max_age/max_age_filter.h
@@ -19,6 +19,14 @@
 
 #include "src/core/lib/channel/channel_stack.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 extern const grpc_channel_filter grpc_max_age_filter;
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_FILTERS_MAX_AGE_MAX_AGE_FILTER_H */
diff --git a/src/core/ext/filters/message_size/message_size_filter.c b/src/core/ext/filters/message_size/message_size_filter.cc
similarity index 98%
rename from src/core/ext/filters/message_size/message_size_filter.c
rename to src/core/ext/filters/message_size/message_size_filter.cc
index 47763b1..5dc131b 100644
--- a/src/core/ext/filters/message_size/message_size_filter.c
+++ b/src/core/ext/filters/message_size/message_size_filter.cc
@@ -288,7 +288,7 @@
   }
 }
 
-void grpc_message_size_filter_init(void) {
+extern "C" void grpc_message_size_filter_init(void) {
   grpc_channel_init_register_stage(GRPC_CLIENT_SUBCHANNEL,
                                    GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
                                    maybe_add_message_size_filter, NULL);
@@ -300,4 +300,4 @@
                                    maybe_add_message_size_filter, NULL);
 }
 
-void grpc_message_size_filter_shutdown(void) {}
+extern "C" void grpc_message_size_filter_shutdown(void) {}
diff --git a/src/core/ext/filters/message_size/message_size_filter.h b/src/core/ext/filters/message_size/message_size_filter.h
index d3667f7..da325d6 100644
--- a/src/core/ext/filters/message_size/message_size_filter.h
+++ b/src/core/ext/filters/message_size/message_size_filter.h
@@ -19,6 +19,14 @@
 
 #include "src/core/lib/channel/channel_stack.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 extern const grpc_channel_filter grpc_message_size_filter;
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_FILTERS_MESSAGE_SIZE_MESSAGE_SIZE_FILTER_H */
diff --git a/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c b/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc
similarity index 97%
rename from src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c
rename to src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc
index c8b2fe5..f77ed02 100644
--- a/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c
+++ b/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc
@@ -196,7 +196,7 @@
       builder, &grpc_workaround_cronet_compression_filter, NULL, NULL);
 }
 
-void grpc_workaround_cronet_compression_filter_init(void) {
+extern "C" void grpc_workaround_cronet_compression_filter_init(void) {
   grpc_channel_init_register_stage(
       GRPC_SERVER_CHANNEL, GRPC_WORKAROUND_PRIORITY_HIGH,
       register_workaround_cronet_compression, NULL);
@@ -204,4 +204,4 @@
                            parse_user_agent);
 }
 
-void grpc_workaround_cronet_compression_filter_shutdown(void) {}
+extern "C" void grpc_workaround_cronet_compression_filter_shutdown(void) {}
diff --git a/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h b/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h
index 9dae4f0..c8b07df 100644
--- a/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h
+++ b/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h
@@ -19,7 +19,15 @@
 
 #include "src/core/lib/channel/channel_stack.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 extern const grpc_channel_filter grpc_workaround_cronet_compression_filter;
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_FILTERS_WORKAROUNDS_WORKAROUND_CRONET_COMPRESSION_FILTER_H \
         */
diff --git a/src/core/ext/filters/workarounds/workaround_utils.c b/src/core/ext/filters/workarounds/workaround_utils.cc
similarity index 100%
rename from src/core/ext/filters/workarounds/workaround_utils.c
rename to src/core/ext/filters/workarounds/workaround_utils.cc
diff --git a/src/core/ext/filters/workarounds/workaround_utils.h b/src/core/ext/filters/workarounds/workaround_utils.h
index 2ad7a87..afd5291 100644
--- a/src/core/ext/filters/workarounds/workaround_utils.h
+++ b/src/core/ext/filters/workarounds/workaround_utils.h
@@ -24,6 +24,10 @@
 #define GRPC_WORKAROUND_PRIORITY_HIGH 10001
 #define GRPC_WORKAROUND_PROIRITY_LOW 9999
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct grpc_workaround_user_agent_md {
   bool workaround_active[GRPC_MAX_WORKAROUND_ID];
 } grpc_workaround_user_agent_md;
@@ -34,4 +38,8 @@
 
 void grpc_register_workaround(uint32_t id, user_agent_parser parser);
 
-#endif /* GRPC_CORE_EXT_FILTERS_WORKAROUNDS_WORKAROUND_UTILS_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_FILTERS_WORKAROUNDS_WORKAROUND_UTILS_H */
\ No newline at end of file
diff --git a/src/core/ext/transport/chttp2/alpn/alpn.c b/src/core/ext/transport/chttp2/alpn/alpn.cc
similarity index 100%
rename from src/core/ext/transport/chttp2/alpn/alpn.c
rename to src/core/ext/transport/chttp2/alpn/alpn.cc
diff --git a/src/core/ext/transport/chttp2/alpn/alpn.h b/src/core/ext/transport/chttp2/alpn/alpn.h
index 379af4b..5842204 100644
--- a/src/core/ext/transport/chttp2/alpn/alpn.h
+++ b/src/core/ext/transport/chttp2/alpn/alpn.h
@@ -21,6 +21,10 @@
 
 #include <string.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Retuns 1 if the version is supported, 0 otherwise. */
 int grpc_chttp2_is_alpn_version_supported(const char *version, size_t size);
 
@@ -31,4 +35,8 @@
  * grpc_chttp2_num_alpn_versions()) */
 const char *grpc_chttp2_get_alpn_version_index(size_t i);
 
-#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_ALPN_ALPN_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_ALPN_ALPN_H */
\ No newline at end of file
diff --git a/src/core/ext/transport/chttp2/client/chttp2_connector.c b/src/core/ext/transport/chttp2/client/chttp2_connector.cc
similarity index 100%
rename from src/core/ext/transport/chttp2/client/chttp2_connector.c
rename to src/core/ext/transport/chttp2/client/chttp2_connector.cc
diff --git a/src/core/ext/transport/chttp2/client/chttp2_connector.h b/src/core/ext/transport/chttp2/client/chttp2_connector.h
index e258892..63f264e 100644
--- a/src/core/ext/transport/chttp2/client/chttp2_connector.h
+++ b/src/core/ext/transport/chttp2/client/chttp2_connector.h
@@ -19,8 +19,16 @@
 #ifndef GRPC_CORE_EXT_TRANSPORT_CHTTP2_CLIENT_CHTTP2_CONNECTOR_H
 #define GRPC_CORE_EXT_TRANSPORT_CHTTP2_CLIENT_CHTTP2_CONNECTOR_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #include "src/core/ext/filters/client_channel/connector.h"
 
 grpc_connector* grpc_chttp2_connector_create();
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_CLIENT_CHTTP2_CONNECTOR_H */
diff --git a/src/core/ext/transport/chttp2/client/insecure/channel_create.c b/src/core/ext/transport/chttp2/client/insecure/channel_create.cc
similarity index 100%
rename from src/core/ext/transport/chttp2/client/insecure/channel_create.c
rename to src/core/ext/transport/chttp2/client/insecure/channel_create.cc
diff --git a/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c b/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc
similarity index 100%
rename from src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c
rename to src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc
diff --git a/src/core/ext/transport/chttp2/client/secure/secure_channel_create.c b/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc
similarity index 97%
rename from src/core/ext/transport/chttp2/client/secure/secure_channel_create.c
rename to src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc
index d4580f1..fe296cf 100644
--- a/src/core/ext/transport/chttp2/client/secure/secure_channel_create.c
+++ b/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc
@@ -86,7 +86,8 @@
     if (target_uri->path[0] != '\0') {  // "path" may be empty
       const grpc_slice key = grpc_slice_from_static_string(
           target_uri->path[0] == '/' ? target_uri->path + 1 : target_uri->path);
-      const char *value = grpc_slice_hash_table_get(targets_info, key);
+      const char *value =
+          (const char *)grpc_slice_hash_table_get(targets_info, key);
       if (value != NULL) target_name_to_check = gpr_strdup(value);
       grpc_slice_unref_internal(exec_ctx, key);
     }
@@ -127,7 +128,8 @@
   if (new_args_from_connector != NULL) {
     grpc_channel_args_destroy(exec_ctx, new_args_from_connector);
   }
-  grpc_subchannel_args *final_sc_args = gpr_malloc(sizeof(*final_sc_args));
+  grpc_subchannel_args *final_sc_args =
+      (grpc_subchannel_args *)gpr_malloc(sizeof(*final_sc_args));
   memcpy(final_sc_args, args, sizeof(*args));
   final_sc_args->args = new_args;
   return final_sc_args;
@@ -164,7 +166,7 @@
   }
   // Add channel arg containing the server URI.
   grpc_arg arg = grpc_channel_arg_string_create(
-      GRPC_ARG_SERVER_URI,
+      (char *)GRPC_ARG_SERVER_URI,
       grpc_resolver_factory_add_default_prefix_if_needed(exec_ctx, target));
   const char *to_remove[] = {GRPC_ARG_SERVER_URI};
   grpc_channel_args *new_args =
diff --git a/src/core/ext/transport/chttp2/server/chttp2_server.c b/src/core/ext/transport/chttp2/server/chttp2_server.cc
similarity index 99%
rename from src/core/ext/transport/chttp2/server/chttp2_server.c
rename to src/core/ext/transport/chttp2/server/chttp2_server.cc
index 60244e1..a51959b 100644
--- a/src/core/ext/transport/chttp2/server/chttp2_server.c
+++ b/src/core/ext/transport/chttp2/server/chttp2_server.cc
@@ -20,6 +20,7 @@
 
 #include <grpc/grpc.h>
 
+#include <inttypes.h>
 #include <string.h>
 
 #include <grpc/support/alloc.h>
diff --git a/src/core/ext/transport/chttp2/server/chttp2_server.h b/src/core/ext/transport/chttp2/server/chttp2_server.h
index ed96849..e1df28e 100644
--- a/src/core/ext/transport/chttp2/server/chttp2_server.h
+++ b/src/core/ext/transport/chttp2/server/chttp2_server.h
@@ -23,10 +23,18 @@
 
 #include "src/core/lib/iomgr/exec_ctx.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /// Adds a port to \a server.  Sets \a port_num to the port number.
 /// Takes ownership of \a args.
 grpc_error *grpc_chttp2_server_add_port(grpc_exec_ctx *exec_ctx,
                                         grpc_server *server, const char *addr,
                                         grpc_channel_args *args, int *port_num);
 
-#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_SERVER_CHTTP2_SERVER_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_SERVER_CHTTP2_SERVER_H */
\ No newline at end of file
diff --git a/src/core/ext/transport/chttp2/server/insecure/server_chttp2.c b/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc
similarity index 100%
rename from src/core/ext/transport/chttp2/server/insecure/server_chttp2.c
rename to src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc
diff --git a/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c b/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc
similarity index 100%
rename from src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c
rename to src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc
diff --git a/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c b/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc
similarity index 96%
rename from src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c
rename to src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc
index 5ad63aa..e74a138 100644
--- a/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c
+++ b/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc
@@ -40,6 +40,8 @@
   grpc_error *err = GRPC_ERROR_NONE;
   grpc_server_security_connector *sc = NULL;
   int port_num = 0;
+  grpc_security_status status;
+  grpc_channel_args *args = NULL;
   GRPC_API_TRACE(
       "grpc_server_add_secure_http2_port("
       "server=%p, addr=%s, creds=%p)",
@@ -50,7 +52,7 @@
         "No credentials specified for secure server port (creds==NULL)");
     goto done;
   }
-  grpc_security_status status =
+  status =
       grpc_server_credentials_create_security_connector(&exec_ctx, creds, &sc);
   if (status != GRPC_SECURITY_OK) {
     char *msg;
@@ -66,7 +68,7 @@
   grpc_arg args_to_add[2];
   args_to_add[0] = grpc_server_credentials_to_arg(creds);
   args_to_add[1] = grpc_security_connector_to_arg(&sc->base);
-  grpc_channel_args *args =
+  args =
       grpc_channel_args_copy_and_add(grpc_server_get_channel_args(server),
                                      args_to_add, GPR_ARRAY_SIZE(args_to_add));
   // Add server port.
diff --git a/src/core/ext/transport/chttp2/transport/bin_decoder.c b/src/core/ext/transport/chttp2/transport/bin_decoder.cc
similarity index 100%
rename from src/core/ext/transport/chttp2/transport/bin_decoder.c
rename to src/core/ext/transport/chttp2/transport/bin_decoder.cc
diff --git a/src/core/ext/transport/chttp2/transport/bin_decoder.h b/src/core/ext/transport/chttp2/transport/bin_decoder.h
index 047b33d..f50e0a8 100644
--- a/src/core/ext/transport/chttp2/transport/bin_decoder.h
+++ b/src/core/ext/transport/chttp2/transport/bin_decoder.h
@@ -22,6 +22,10 @@
 #include <grpc/slice.h>
 #include <stdbool.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 struct grpc_base64_decode_context {
   /* input/output: */
   uint8_t *input_cur;
@@ -49,4 +53,8 @@
                                                  grpc_slice input,
                                                  size_t output_length);
 
-#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_BIN_DECODER_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_BIN_DECODER_H */
\ No newline at end of file
diff --git a/src/core/ext/transport/chttp2/transport/bin_encoder.c b/src/core/ext/transport/chttp2/transport/bin_encoder.cc
similarity index 100%
rename from src/core/ext/transport/chttp2/transport/bin_encoder.c
rename to src/core/ext/transport/chttp2/transport/bin_encoder.cc
diff --git a/src/core/ext/transport/chttp2/transport/bin_encoder.h b/src/core/ext/transport/chttp2/transport/bin_encoder.h
index a8f36a3..ae8219c 100644
--- a/src/core/ext/transport/chttp2/transport/bin_encoder.h
+++ b/src/core/ext/transport/chttp2/transport/bin_encoder.h
@@ -21,6 +21,10 @@
 
 #include <grpc/slice.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* base64 encode a slice. Returns a new slice, does not take ownership of the
    input */
 grpc_slice grpc_chttp2_base64_encode(grpc_slice input);
@@ -36,4 +40,8 @@
    return y; */
 grpc_slice grpc_chttp2_base64_encode_and_huffman_compress(grpc_slice input);
 
-#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_BIN_ENCODER_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_BIN_ENCODER_H */
\ No newline at end of file
diff --git a/src/core/ext/transport/chttp2/transport/chttp2_plugin.c b/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc
similarity index 90%
rename from src/core/ext/transport/chttp2/transport/chttp2_plugin.c
rename to src/core/ext/transport/chttp2/transport/chttp2_plugin.cc
index 6d09953..ac9ae5c 100644
--- a/src/core/ext/transport/chttp2/transport/chttp2_plugin.c
+++ b/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc
@@ -20,7 +20,7 @@
 #include "src/core/lib/debug/trace.h"
 #include "src/core/lib/transport/metadata.h"
 
-void grpc_chttp2_plugin_init(void) {
+extern "C" void grpc_chttp2_plugin_init(void) {
   grpc_register_tracer(&grpc_http_trace);
   grpc_register_tracer(&grpc_flowctl_trace);
   grpc_register_tracer(&grpc_trace_http2_stream_state);
@@ -29,4 +29,4 @@
 #endif
 }
 
-void grpc_chttp2_plugin_shutdown(void) {}
+extern "C" void grpc_chttp2_plugin_shutdown(void) {}
diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.c b/src/core/ext/transport/chttp2/transport/chttp2_transport.cc
similarity index 97%
rename from src/core/ext/transport/chttp2/transport/chttp2_transport.c
rename to src/core/ext/transport/chttp2/transport/chttp2_transport.cc
index acf4963..65167c0 100644
--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.c
+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.cc
@@ -18,6 +18,9 @@
 
 #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
 
+#include <grpc/support/port_platform.h>
+
+#include <inttypes.h>
 #include <limits.h>
 #include <math.h>
 #include <stdio.h>
@@ -315,15 +318,16 @@
 
   grpc_bdp_estimator_init(&t->flow_control.bdp_estimator, t->peer_string);
   t->flow_control.last_pid_update = gpr_now(GPR_CLOCK_MONOTONIC);
-  grpc_pid_controller_init(
-      &t->flow_control.pid_controller,
-      (grpc_pid_controller_args){.gain_p = 4,
-                                 .gain_i = 8,
-                                 .gain_d = 0,
-                                 .initial_control_value = log2(DEFAULT_WINDOW),
-                                 .min_control_value = -1,
-                                 .max_control_value = 25,
-                                 .integral_range = 10});
+  grpc_pid_controller_init(&t->flow_control.pid_controller,
+                           {
+                               4,                    /* gain_p */
+                               8,                    /* gain_t */
+                               0,                    /* gain_d */
+                               log2(DEFAULT_WINDOW), /* initial_control_value */
+                               -1,                   /* min_control_value */
+                               25,                   /* max_control_value */
+                               10                    /* integral_range */
+                           });
 
   grpc_chttp2_goaway_parser_init(&t->goaway_parser);
   grpc_chttp2_hpack_parser_init(exec_ctx, &t->hpack_parser);
@@ -433,13 +437,11 @@
                              GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)) {
         t->ping_policy.max_pings_without_data = grpc_channel_arg_get_integer(
             &channel_args->args[i],
-            (grpc_integer_options){g_default_max_pings_without_data, 0,
-                                   INT_MAX});
+            {g_default_max_pings_without_data, 0, INT_MAX});
       } else if (0 == strcmp(channel_args->args[i].key,
                              GRPC_ARG_HTTP2_MAX_PING_STRIKES)) {
         t->ping_policy.max_ping_strikes = grpc_channel_arg_get_integer(
-            &channel_args->args[i],
-            (grpc_integer_options){g_default_max_ping_strikes, 0, INT_MAX});
+            &channel_args->args[i], {g_default_max_ping_strikes, 0, INT_MAX});
       } else if (0 ==
                  strcmp(
                      channel_args->args[i].key,
@@ -448,9 +450,8 @@
             gpr_time_from_millis(
                 grpc_channel_arg_get_integer(
                     &channel_args->args[i],
-                    (grpc_integer_options){
-                        g_default_min_sent_ping_interval_without_data_ms, 0,
-                        INT_MAX}),
+                    {g_default_min_sent_ping_interval_without_data_ms, 0,
+                     INT_MAX}),
                 GPR_TIMESPAN);
       } else if (0 ==
                  strcmp(
@@ -460,27 +461,24 @@
             gpr_time_from_millis(
                 grpc_channel_arg_get_integer(
                     &channel_args->args[i],
-                    (grpc_integer_options){
-                        g_default_min_recv_ping_interval_without_data_ms, 0,
-                        INT_MAX}),
+                    {g_default_min_recv_ping_interval_without_data_ms, 0,
+                     INT_MAX}),
                 GPR_TIMESPAN);
       } else if (0 == strcmp(channel_args->args[i].key,
                              GRPC_ARG_HTTP2_WRITE_BUFFER_SIZE)) {
         t->write_buffer_size = (uint32_t)grpc_channel_arg_get_integer(
-            &channel_args->args[i],
-            (grpc_integer_options){0, 0, MAX_WRITE_BUFFER_SIZE});
+            &channel_args->args[i], {0, 0, MAX_WRITE_BUFFER_SIZE});
       } else if (0 ==
                  strcmp(channel_args->args[i].key, GRPC_ARG_HTTP2_BDP_PROBE)) {
-        t->flow_control.enable_bdp_probe = grpc_channel_arg_get_integer(
-            &channel_args->args[i], (grpc_integer_options){1, 0, 1});
+        t->flow_control.enable_bdp_probe =
+            grpc_channel_arg_get_integer(&channel_args->args[i], {1, 0, 1});
       } else if (0 == strcmp(channel_args->args[i].key,
                              GRPC_ARG_KEEPALIVE_TIME_MS)) {
         const int value = grpc_channel_arg_get_integer(
             &channel_args->args[i],
-            (grpc_integer_options){t->is_client
-                                       ? g_default_client_keepalive_time_ms
-                                       : g_default_server_keepalive_time_ms,
-                                   1, INT_MAX});
+            {t->is_client ? g_default_client_keepalive_time_ms
+                          : g_default_server_keepalive_time_ms,
+             1, INT_MAX});
         t->keepalive_time = value == INT_MAX
                                 ? gpr_inf_future(GPR_TIMESPAN)
                                 : gpr_time_from_millis(value, GPR_TIMESPAN);
@@ -488,18 +486,17 @@
                              GRPC_ARG_KEEPALIVE_TIMEOUT_MS)) {
         const int value = grpc_channel_arg_get_integer(
             &channel_args->args[i],
-            (grpc_integer_options){t->is_client
-                                       ? g_default_client_keepalive_timeout_ms
-                                       : g_default_server_keepalive_timeout_ms,
-                                   0, INT_MAX});
+            {t->is_client ? g_default_client_keepalive_timeout_ms
+                          : g_default_server_keepalive_timeout_ms,
+             0, INT_MAX});
         t->keepalive_timeout = value == INT_MAX
                                    ? gpr_inf_future(GPR_TIMESPAN)
                                    : gpr_time_from_millis(value, GPR_TIMESPAN);
       } else if (0 == strcmp(channel_args->args[i].key,
                              GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS)) {
         t->keepalive_permit_without_calls =
-            (uint32_t)grpc_channel_arg_get_integer(
-                &channel_args->args[i], (grpc_integer_options){0, 0, 1});
+            (uint32_t)grpc_channel_arg_get_integer(&channel_args->args[i],
+                                                   {0, 0, 1});
       } else if (0 == strcmp(channel_args->args[i].key,
                              GRPC_ARG_OPTIMIZATION_TARGET)) {
         if (channel_args->args[i].type != GRPC_ARG_STRING) {
@@ -1901,7 +1898,9 @@
                                  &s->frame_storage);
           s->unprocessed_incoming_frames_decompressed = false;
         }
-        if (!s->unprocessed_incoming_frames_decompressed) {
+        if (!s->unprocessed_incoming_frames_decompressed &&
+            s->stream_decompression_method !=
+                GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS) {
           GPR_ASSERT(s->decompressed_data_buffer.length == 0);
           bool end_of_context;
           if (!s->stream_decompression_ctx) {
@@ -2626,9 +2625,7 @@
     for (i = 0; i < args->num_args; i++) {
       if (0 == strcmp(args->args[i].key, GRPC_ARG_KEEPALIVE_TIME_MS)) {
         const int value = grpc_channel_arg_get_integer(
-            &args->args[i],
-            (grpc_integer_options){g_default_client_keepalive_time_ms, 1,
-                                   INT_MAX});
+            &args->args[i], {g_default_client_keepalive_time_ms, 1, INT_MAX});
         if (is_client) {
           g_default_client_keepalive_time_ms = value;
         } else {
@@ -2638,8 +2635,7 @@
                  strcmp(args->args[i].key, GRPC_ARG_KEEPALIVE_TIMEOUT_MS)) {
         const int value = grpc_channel_arg_get_integer(
             &args->args[i],
-            (grpc_integer_options){g_default_client_keepalive_timeout_ms, 0,
-                                   INT_MAX});
+            {g_default_client_keepalive_timeout_ms, 0, INT_MAX});
         if (is_client) {
           g_default_client_keepalive_timeout_ms = value;
         } else {
@@ -2650,18 +2646,15 @@
         g_default_keepalive_permit_without_calls =
             (uint32_t)grpc_channel_arg_get_integer(
                 &args->args[i],
-                (grpc_integer_options){g_default_keepalive_permit_without_calls,
-                                       0, 1});
+                {g_default_keepalive_permit_without_calls, 0, 1});
       } else if (0 ==
                  strcmp(args->args[i].key, GRPC_ARG_HTTP2_MAX_PING_STRIKES)) {
         g_default_max_ping_strikes = grpc_channel_arg_get_integer(
-            &args->args[i],
-            (grpc_integer_options){g_default_max_ping_strikes, 0, INT_MAX});
+            &args->args[i], {g_default_max_ping_strikes, 0, INT_MAX});
       } else if (0 == strcmp(args->args[i].key,
                              GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)) {
         g_default_max_pings_without_data = grpc_channel_arg_get_integer(
-            &args->args[i], (grpc_integer_options){
-                                g_default_max_pings_without_data, 0, INT_MAX});
+            &args->args[i], {g_default_max_pings_without_data, 0, INT_MAX});
       } else if (0 ==
                  strcmp(
                      args->args[i].key,
@@ -2669,9 +2662,7 @@
         g_default_min_sent_ping_interval_without_data_ms =
             grpc_channel_arg_get_integer(
                 &args->args[i],
-                (grpc_integer_options){
-                    g_default_min_sent_ping_interval_without_data_ms, 0,
-                    INT_MAX});
+                {g_default_min_sent_ping_interval_without_data_ms, 0, INT_MAX});
       } else if (0 ==
                  strcmp(
                      args->args[i].key,
@@ -2679,9 +2670,7 @@
         g_default_min_recv_ping_interval_without_data_ms =
             grpc_channel_arg_get_integer(
                 &args->args[i],
-                (grpc_integer_options){
-                    g_default_min_recv_ping_interval_without_data_ms, 0,
-                    INT_MAX});
+                {g_default_min_recv_ping_interval_without_data_ms, 0, INT_MAX});
       }
     }
   }
diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.h b/src/core/ext/transport/chttp2/transport/chttp2_transport.h
index 55fb1a8..321fca4 100644
--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.h
+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.h
@@ -23,6 +23,10 @@
 #include "src/core/lib/iomgr/endpoint.h"
 #include "src/core/lib/transport/transport.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 extern grpc_tracer_flag grpc_http_trace;
 extern grpc_tracer_flag grpc_flowctl_trace;
 extern grpc_tracer_flag grpc_trace_http2_stream_state;
@@ -41,4 +45,8 @@
                                          grpc_transport *transport,
                                          grpc_slice_buffer *read_buffer);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_CHTTP2_TRANSPORT_H */
diff --git a/src/core/ext/transport/chttp2/transport/flow_control.c b/src/core/ext/transport/chttp2/transport/flow_control.cc
similarity index 98%
rename from src/core/ext/transport/chttp2/transport/flow_control.c
rename to src/core/ext/transport/chttp2/transport/flow_control.cc
index 569a634..75eae1f 100644
--- a/src/core/ext/transport/chttp2/transport/flow_control.c
+++ b/src/core/ext/transport/chttp2/transport/flow_control.cc
@@ -18,6 +18,7 @@
 
 #include "src/core/ext/transport/chttp2/transport/internal.h"
 
+#include <inttypes.h>
 #include <limits.h>
 #include <math.h>
 #include <string.h>
@@ -86,7 +87,7 @@
 
 static void posttrace(shadow_flow_control* shadow_fc,
                       grpc_chttp2_transport_flowctl* tfc,
-                      grpc_chttp2_stream_flowctl* sfc, char* reason) {
+                      grpc_chttp2_stream_flowctl* sfc, const char* reason) {
   uint32_t acked_local_window =
       tfc->t->settings[GRPC_SENT_SETTINGS]
                       [GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE];
@@ -128,7 +129,7 @@
   gpr_free(saw_str);
 }
 
-static char* urgency_to_string(grpc_chttp2_flowctl_urgency urgency) {
+static const char* urgency_to_string(grpc_chttp2_flowctl_urgency urgency) {
   switch (urgency) {
     case GRPC_CHTTP2_FLOWCTL_NO_ACTION_NEEDED:
       return "no action";
diff --git a/src/core/ext/transport/chttp2/transport/frame.h b/src/core/ext/transport/chttp2/transport/frame.h
index dba4c00..e7debda 100644
--- a/src/core/ext/transport/chttp2/transport/frame.h
+++ b/src/core/ext/transport/chttp2/transport/frame.h
@@ -24,6 +24,10 @@
 
 #include "src/core/lib/iomgr/error.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* defined in internal.h */
 typedef struct grpc_chttp2_stream grpc_chttp2_stream;
 typedef struct grpc_chttp2_transport grpc_chttp2_transport;
@@ -43,4 +47,8 @@
 #define GRPC_CHTTP2_DATA_FLAG_PADDED 8
 #define GRPC_CHTTP2_FLAG_HAS_PRIORITY 0x20
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_H */
diff --git a/src/core/ext/transport/chttp2/transport/frame_data.c b/src/core/ext/transport/chttp2/transport/frame_data.cc
similarity index 100%
rename from src/core/ext/transport/chttp2/transport/frame_data.c
rename to src/core/ext/transport/chttp2/transport/frame_data.cc
diff --git a/src/core/ext/transport/chttp2/transport/frame_data.h b/src/core/ext/transport/chttp2/transport/frame_data.h
index 3f1c787..2df99cc 100644
--- a/src/core/ext/transport/chttp2/transport/frame_data.h
+++ b/src/core/ext/transport/chttp2/transport/frame_data.h
@@ -28,6 +28,10 @@
 #include "src/core/lib/transport/byte_stream.h"
 #include "src/core/lib/transport/transport.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef enum {
   GRPC_CHTTP2_DATA_FH_0,
   GRPC_CHTTP2_DATA_FH_1,
@@ -80,4 +84,8 @@
     grpc_slice_buffer *slices, grpc_slice *slice_out,
     grpc_byte_stream **stream_out);
 
-#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_DATA_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_DATA_H */
\ No newline at end of file
diff --git a/src/core/ext/transport/chttp2/transport/frame_goaway.c b/src/core/ext/transport/chttp2/transport/frame_goaway.cc
similarity index 100%
rename from src/core/ext/transport/chttp2/transport/frame_goaway.c
rename to src/core/ext/transport/chttp2/transport/frame_goaway.cc
diff --git a/src/core/ext/transport/chttp2/transport/frame_goaway.h b/src/core/ext/transport/chttp2/transport/frame_goaway.h
index abc48f3..ce6f18b 100644
--- a/src/core/ext/transport/chttp2/transport/frame_goaway.h
+++ b/src/core/ext/transport/chttp2/transport/frame_goaway.h
@@ -25,6 +25,10 @@
 #include "src/core/ext/transport/chttp2/transport/frame.h"
 #include "src/core/lib/iomgr/exec_ctx.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef enum {
   GRPC_CHTTP2_GOAWAY_LSI0,
   GRPC_CHTTP2_GOAWAY_LSI1,
@@ -60,4 +64,8 @@
                                grpc_slice debug_data,
                                grpc_slice_buffer *slice_buffer);
 
-#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_GOAWAY_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_GOAWAY_H */
\ No newline at end of file
diff --git a/src/core/ext/transport/chttp2/transport/frame_ping.c b/src/core/ext/transport/chttp2/transport/frame_ping.cc
similarity index 100%
rename from src/core/ext/transport/chttp2/transport/frame_ping.c
rename to src/core/ext/transport/chttp2/transport/frame_ping.cc
diff --git a/src/core/ext/transport/chttp2/transport/frame_ping.h b/src/core/ext/transport/chttp2/transport/frame_ping.h
index 5969ace..91f16f0 100644
--- a/src/core/ext/transport/chttp2/transport/frame_ping.h
+++ b/src/core/ext/transport/chttp2/transport/frame_ping.h
@@ -23,6 +23,10 @@
 #include "src/core/ext/transport/chttp2/transport/frame.h"
 #include "src/core/lib/iomgr/exec_ctx.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct {
   uint8_t byte;
   uint8_t is_ack;
@@ -41,4 +45,8 @@
 /* Test-only function for disabling ping ack */
 void grpc_set_disable_ping_ack(bool disable_ping_ack);
 
-#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_PING_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_PING_H */
\ No newline at end of file
diff --git a/src/core/ext/transport/chttp2/transport/frame_rst_stream.c b/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc
similarity index 100%
rename from src/core/ext/transport/chttp2/transport/frame_rst_stream.c
rename to src/core/ext/transport/chttp2/transport/frame_rst_stream.cc
diff --git a/src/core/ext/transport/chttp2/transport/frame_rst_stream.h b/src/core/ext/transport/chttp2/transport/frame_rst_stream.h
index d088221..bdca064 100644
--- a/src/core/ext/transport/chttp2/transport/frame_rst_stream.h
+++ b/src/core/ext/transport/chttp2/transport/frame_rst_stream.h
@@ -24,6 +24,10 @@
 #include "src/core/lib/iomgr/exec_ctx.h"
 #include "src/core/lib/transport/transport.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct {
   uint8_t byte;
   uint8_t reason_bytes[4];
@@ -40,4 +44,8 @@
                                                 grpc_chttp2_stream *s,
                                                 grpc_slice slice, int is_last);
 
-#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_RST_STREAM_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_RST_STREAM_H */
\ No newline at end of file
diff --git a/src/core/ext/transport/chttp2/transport/frame_settings.c b/src/core/ext/transport/chttp2/transport/frame_settings.cc
similarity index 100%
rename from src/core/ext/transport/chttp2/transport/frame_settings.c
rename to src/core/ext/transport/chttp2/transport/frame_settings.cc
diff --git a/src/core/ext/transport/chttp2/transport/frame_settings.h b/src/core/ext/transport/chttp2/transport/frame_settings.h
index 47479d6..f0793f0 100644
--- a/src/core/ext/transport/chttp2/transport/frame_settings.h
+++ b/src/core/ext/transport/chttp2/transport/frame_settings.h
@@ -25,6 +25,10 @@
 #include "src/core/ext/transport/chttp2/transport/http2_settings.h"
 #include "src/core/lib/iomgr/exec_ctx.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef enum {
   GRPC_CHTTP2_SPS_ID0,
   GRPC_CHTTP2_SPS_ID1,
@@ -58,4 +62,8 @@
                                               grpc_chttp2_stream *s,
                                               grpc_slice slice, int is_last);
 
-#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_SETTINGS_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_SETTINGS_H */
\ No newline at end of file
diff --git a/src/core/ext/transport/chttp2/transport/frame_window_update.c b/src/core/ext/transport/chttp2/transport/frame_window_update.cc
similarity index 100%
rename from src/core/ext/transport/chttp2/transport/frame_window_update.c
rename to src/core/ext/transport/chttp2/transport/frame_window_update.cc
diff --git a/src/core/ext/transport/chttp2/transport/frame_window_update.h b/src/core/ext/transport/chttp2/transport/frame_window_update.h
index 698da4e..29cf0cc 100644
--- a/src/core/ext/transport/chttp2/transport/frame_window_update.h
+++ b/src/core/ext/transport/chttp2/transport/frame_window_update.h
@@ -24,6 +24,10 @@
 #include "src/core/lib/iomgr/exec_ctx.h"
 #include "src/core/lib/transport/transport.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct {
   uint8_t byte;
   uint8_t is_connection_update;
@@ -39,4 +43,8 @@
     grpc_exec_ctx *exec_ctx, void *parser, grpc_chttp2_transport *t,
     grpc_chttp2_stream *s, grpc_slice slice, int is_last);
 
-#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_WINDOW_UPDATE_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_WINDOW_UPDATE_H */
\ No newline at end of file
diff --git a/src/core/ext/transport/chttp2/transport/hpack_encoder.c b/src/core/ext/transport/chttp2/transport/hpack_encoder.cc
similarity index 99%
rename from src/core/ext/transport/chttp2/transport/hpack_encoder.c
rename to src/core/ext/transport/chttp2/transport/hpack_encoder.cc
index a404b66..5f1a270 100644
--- a/src/core/ext/transport/chttp2/transport/hpack_encoder.c
+++ b/src/core/ext/transport/chttp2/transport/hpack_encoder.cc
@@ -57,7 +57,7 @@
     {{0, 0}}                  /* data.refcounted */
 };
 
-extern grpc_tracer_flag grpc_http_trace;
+extern "C" grpc_tracer_flag grpc_http_trace;
 
 typedef struct {
   int is_first_frame;
diff --git a/src/core/ext/transport/chttp2/transport/hpack_encoder.h b/src/core/ext/transport/chttp2/transport/hpack_encoder.h
index 271192f..dc28b55 100644
--- a/src/core/ext/transport/chttp2/transport/hpack_encoder.h
+++ b/src/core/ext/transport/chttp2/transport/hpack_encoder.h
@@ -34,6 +34,10 @@
 /* maximum table size we'll actually use */
 #define GRPC_CHTTP2_HPACKC_MAX_TABLE_SIZE (1024 * 1024)
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct {
   uint32_t filter_elems_sum;
   uint32_t max_table_size;
@@ -91,4 +95,8 @@
                                const grpc_encode_header_options *options,
                                grpc_slice_buffer *outbuf);
 
-#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HPACK_ENCODER_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HPACK_ENCODER_H */
\ No newline at end of file
diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser.c b/src/core/ext/transport/chttp2/transport/hpack_parser.cc
similarity index 100%
rename from src/core/ext/transport/chttp2/transport/hpack_parser.c
rename to src/core/ext/transport/chttp2/transport/hpack_parser.cc
diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser.h b/src/core/ext/transport/chttp2/transport/hpack_parser.h
index 8fbc6a6..6c36ebd 100644
--- a/src/core/ext/transport/chttp2/transport/hpack_parser.h
+++ b/src/core/ext/transport/chttp2/transport/hpack_parser.h
@@ -27,6 +27,10 @@
 #include "src/core/lib/iomgr/exec_ctx.h"
 #include "src/core/lib/transport/metadata.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct grpc_chttp2_hpack_parser grpc_chttp2_hpack_parser;
 
 typedef grpc_error *(*grpc_chttp2_hpack_parser_state)(
@@ -111,4 +115,8 @@
                                             grpc_chttp2_stream *s,
                                             grpc_slice slice, int is_last);
 
-#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HPACK_PARSER_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HPACK_PARSER_H */
\ No newline at end of file
diff --git a/src/core/ext/transport/chttp2/transport/hpack_table.c b/src/core/ext/transport/chttp2/transport/hpack_table.cc
similarity index 99%
rename from src/core/ext/transport/chttp2/transport/hpack_table.c
rename to src/core/ext/transport/chttp2/transport/hpack_table.cc
index bbd135a..82c284b 100644
--- a/src/core/ext/transport/chttp2/transport/hpack_table.c
+++ b/src/core/ext/transport/chttp2/transport/hpack_table.cc
@@ -28,7 +28,7 @@
 #include "src/core/lib/debug/trace.h"
 #include "src/core/lib/support/murmur_hash.h"
 
-extern grpc_tracer_flag grpc_http_trace;
+extern "C" grpc_tracer_flag grpc_http_trace;
 
 static struct {
   const char *key;
diff --git a/src/core/ext/transport/chttp2/transport/hpack_table.h b/src/core/ext/transport/chttp2/transport/hpack_table.h
index 2cf8f68..a3ce273 100644
--- a/src/core/ext/transport/chttp2/transport/hpack_table.h
+++ b/src/core/ext/transport/chttp2/transport/hpack_table.h
@@ -24,6 +24,10 @@
 #include "src/core/lib/iomgr/error.h"
 #include "src/core/lib/transport/metadata.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* HPACK header table */
 
 /* last index in the static table */
@@ -94,4 +98,8 @@
 grpc_chttp2_hptbl_find_result grpc_chttp2_hptbl_find(
     const grpc_chttp2_hptbl *tbl, grpc_mdelem md);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HPACK_TABLE_H */
diff --git a/src/core/ext/transport/chttp2/transport/http2_settings.c b/src/core/ext/transport/chttp2/transport/http2_settings.cc
similarity index 100%
rename from src/core/ext/transport/chttp2/transport/http2_settings.c
rename to src/core/ext/transport/chttp2/transport/http2_settings.cc
diff --git a/src/core/ext/transport/chttp2/transport/http2_settings.h b/src/core/ext/transport/chttp2/transport/http2_settings.h
index 706dfc3..01e80b8 100644
--- a/src/core/ext/transport/chttp2/transport/http2_settings.h
+++ b/src/core/ext/transport/chttp2/transport/http2_settings.h
@@ -35,6 +35,10 @@
 } grpc_chttp2_setting_id;
 
 #define GRPC_CHTTP2_NUM_SETTINGS 7
+
+#ifdef __cplusplus
+extern "C" {
+#endif
 extern const uint16_t grpc_setting_id_to_wire_id[];
 
 bool grpc_wire_id_to_setting_id(uint32_t wire_id, grpc_chttp2_setting_id *out);
@@ -56,4 +60,8 @@
 extern const grpc_chttp2_setting_parameters
     grpc_chttp2_settings_parameters[GRPC_CHTTP2_NUM_SETTINGS];
 
-#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HTTP2_SETTINGS_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HTTP2_SETTINGS_H */
\ No newline at end of file
diff --git a/src/core/ext/transport/chttp2/transport/huffsyms.c b/src/core/ext/transport/chttp2/transport/huffsyms.cc
similarity index 100%
rename from src/core/ext/transport/chttp2/transport/huffsyms.c
rename to src/core/ext/transport/chttp2/transport/huffsyms.cc
diff --git a/src/core/ext/transport/chttp2/transport/huffsyms.h b/src/core/ext/transport/chttp2/transport/huffsyms.h
index 2e2a5da..4002706 100644
--- a/src/core/ext/transport/chttp2/transport/huffsyms.h
+++ b/src/core/ext/transport/chttp2/transport/huffsyms.h
@@ -19,6 +19,10 @@
 #ifndef GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HUFFSYMS_H
 #define GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HUFFSYMS_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* HPACK static huffman table */
 
 #define GRPC_CHTTP2_NUM_HUFFSYMS 257
@@ -30,4 +34,8 @@
 
 extern const grpc_chttp2_huffsym grpc_chttp2_huffsyms[GRPC_CHTTP2_NUM_HUFFSYMS];
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HUFFSYMS_H */
diff --git a/src/core/ext/transport/chttp2/transport/incoming_metadata.c b/src/core/ext/transport/chttp2/transport/incoming_metadata.cc
similarity index 100%
rename from src/core/ext/transport/chttp2/transport/incoming_metadata.c
rename to src/core/ext/transport/chttp2/transport/incoming_metadata.cc
diff --git a/src/core/ext/transport/chttp2/transport/incoming_metadata.h b/src/core/ext/transport/chttp2/transport/incoming_metadata.h
index a951d87..9ffcabd 100644
--- a/src/core/ext/transport/chttp2/transport/incoming_metadata.h
+++ b/src/core/ext/transport/chttp2/transport/incoming_metadata.h
@@ -21,6 +21,10 @@
 
 #include "src/core/lib/transport/transport.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct {
   gpr_arena *arena;
   grpc_metadata_batch batch;
@@ -45,4 +49,8 @@
 void grpc_chttp2_incoming_metadata_buffer_set_deadline(
     grpc_chttp2_incoming_metadata_buffer *buffer, gpr_timespec deadline);
 
-#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_INCOMING_METADATA_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_INCOMING_METADATA_H */
\ No newline at end of file
diff --git a/src/core/ext/transport/chttp2/transport/internal.h b/src/core/ext/transport/chttp2/transport/internal.h
index 4902215..96af18f 100644
--- a/src/core/ext/transport/chttp2/transport/internal.h
+++ b/src/core/ext/transport/chttp2/transport/internal.h
@@ -42,6 +42,10 @@
 #include "src/core/lib/transport/pid_controller.h"
 #include "src/core/lib/transport/transport_impl.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* streams are kept in various linked lists depending on what things need to
    happen to them... this enum labels each list */
 typedef enum {
@@ -908,4 +912,8 @@
 void grpc_chttp2_config_default_keepalive_args(grpc_channel_args *args,
                                                bool is_client);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_INTERNAL_H */
diff --git a/src/core/ext/transport/chttp2/transport/parsing.c b/src/core/ext/transport/chttp2/transport/parsing.cc
similarity index 100%
rename from src/core/ext/transport/chttp2/transport/parsing.c
rename to src/core/ext/transport/chttp2/transport/parsing.cc
diff --git a/src/core/ext/transport/chttp2/transport/stream_lists.c b/src/core/ext/transport/chttp2/transport/stream_lists.cc
similarity index 97%
rename from src/core/ext/transport/chttp2/transport/stream_lists.c
rename to src/core/ext/transport/chttp2/transport/stream_lists.cc
index 47cd22d..9f731a3 100644
--- a/src/core/ext/transport/chttp2/transport/stream_lists.c
+++ b/src/core/ext/transport/chttp2/transport/stream_lists.cc
@@ -16,11 +16,12 @@
  *
  */
 
+#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
 #include "src/core/ext/transport/chttp2/transport/internal.h"
 
 #include <grpc/support/log.h>
 
-static char *stream_list_id_string(grpc_chttp2_stream_list_id id) {
+static const char *stream_list_id_string(grpc_chttp2_stream_list_id id) {
   switch (id) {
     case GRPC_CHTTP2_LIST_WRITABLE:
       return "writable";
diff --git a/src/core/ext/transport/chttp2/transport/stream_map.c b/src/core/ext/transport/chttp2/transport/stream_map.cc
similarity index 100%
rename from src/core/ext/transport/chttp2/transport/stream_map.c
rename to src/core/ext/transport/chttp2/transport/stream_map.cc
diff --git a/src/core/ext/transport/chttp2/transport/stream_map.h b/src/core/ext/transport/chttp2/transport/stream_map.h
index 30c50ba..364d37c 100644
--- a/src/core/ext/transport/chttp2/transport/stream_map.h
+++ b/src/core/ext/transport/chttp2/transport/stream_map.h
@@ -23,6 +23,10 @@
 
 #include <stddef.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Data structure to map a uint32_t to a data object (represented by a void*)
 
    Represented as a sorted array of keys, and a corresponding array of values.
@@ -65,4 +69,8 @@
                                                void *value),
                                      void *user_data);
 
-#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_STREAM_MAP_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_STREAM_MAP_H */
\ No newline at end of file
diff --git a/src/core/ext/transport/chttp2/transport/varint.c b/src/core/ext/transport/chttp2/transport/varint.cc
similarity index 100%
rename from src/core/ext/transport/chttp2/transport/varint.c
rename to src/core/ext/transport/chttp2/transport/varint.cc
diff --git a/src/core/ext/transport/chttp2/transport/varint.h b/src/core/ext/transport/chttp2/transport/varint.h
index 5a2b670..d3a9d90 100644
--- a/src/core/ext/transport/chttp2/transport/varint.h
+++ b/src/core/ext/transport/chttp2/transport/varint.h
@@ -21,6 +21,10 @@
 
 #include <grpc/support/port_platform.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Helpers for hpack varint encoding */
 
 /* length of a value that needs varint tail encoding (it's bigger than can be
@@ -57,4 +61,8 @@
     }                                                                         \
   } while (0)
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_VARINT_H */
diff --git a/src/core/ext/transport/chttp2/transport/writing.c b/src/core/ext/transport/chttp2/transport/writing.cc
similarity index 96%
rename from src/core/ext/transport/chttp2/transport/writing.c
rename to src/core/ext/transport/chttp2/transport/writing.cc
index be1af16..ba3d55a 100644
--- a/src/core/ext/transport/chttp2/transport/writing.c
+++ b/src/core/ext/transport/chttp2/transport/writing.cc
@@ -257,15 +257,15 @@
           s->send_trailing_metadata == NULL ||
           !is_default_initial_metadata(s->send_initial_metadata)) {
         grpc_encode_header_options hopt = {
-            .stream_id = s->id,
-            .is_eof = false,
-            .use_true_binary_metadata =
-                t->settings
-                    [GRPC_PEER_SETTINGS]
-                    [GRPC_CHTTP2_SETTINGS_GRPC_ALLOW_TRUE_BINARY_METADATA] != 0,
-            .max_frame_size = t->settings[GRPC_PEER_SETTINGS]
-                                         [GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE],
-            .stats = &s->stats.outgoing};
+            s->id,  // stream_id
+            false,  // is_eof
+            t->settings[GRPC_PEER_SETTINGS]
+                       [GRPC_CHTTP2_SETTINGS_GRPC_ALLOW_TRUE_BINARY_METADATA] !=
+                0,  // use_true_binary_metadata
+            t->settings[GRPC_PEER_SETTINGS]
+                       [GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE],  // max_frame_size
+            &s->stats.outgoing                                 // stats
+        };
         grpc_chttp2_encode_header(exec_ctx, &t->hpack_compressor, NULL, 0,
                                   s->send_initial_metadata, &hopt, &t->outbuf);
         now_writing = true;
@@ -431,17 +431,16 @@
                                   &s->stats.outgoing, &t->outbuf);
         } else {
           grpc_encode_header_options hopt = {
-              .stream_id = s->id,
-              .is_eof = true,
-              .use_true_binary_metadata =
-                  t->settings
+              s->id, true,
+
+              t->settings
                       [GRPC_PEER_SETTINGS]
                       [GRPC_CHTTP2_SETTINGS_GRPC_ALLOW_TRUE_BINARY_METADATA] !=
                   0,
-              .max_frame_size =
-                  t->settings[GRPC_PEER_SETTINGS]
-                             [GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE],
-              .stats = &s->stats.outgoing};
+
+              t->settings[GRPC_PEER_SETTINGS]
+                         [GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE],
+              &s->stats.outgoing};
           grpc_chttp2_encode_header(exec_ctx, &t->hpack_compressor,
                                     extra_headers_for_trailing_metadata,
                                     num_extra_headers_for_trailing_metadata,
diff --git a/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c b/src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc
similarity index 97%
rename from src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
rename to src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc
index 8336519..b280487 100644
--- a/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
+++ b/src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc
@@ -21,6 +21,8 @@
 #include <stdio.h>
 #include <string.h>
 
+#include <grpc/grpc_cronet.h>
+
 #include <grpc/support/alloc.h>
 #include <grpc/support/log.h>
 
diff --git a/src/core/ext/transport/cronet/transport/cronet_api_dummy.c b/src/core/ext/transport/cronet/transport/cronet_api_dummy.cc
similarity index 100%
rename from src/core/ext/transport/cronet/transport/cronet_api_dummy.c
rename to src/core/ext/transport/cronet/transport/cronet_api_dummy.cc
diff --git a/src/core/ext/transport/cronet/transport/cronet_transport.c b/src/core/ext/transport/cronet/transport/cronet_transport.cc
similarity index 98%
rename from src/core/ext/transport/cronet/transport/cronet_transport.c
rename to src/core/ext/transport/cronet/transport/cronet_transport.cc
index 587a3b8..ff1367f 100644
--- a/src/core/ext/transport/cronet/transport/cronet_transport.c
+++ b/src/core/ext/transport/cronet/transport/cronet_transport.cc
@@ -27,6 +27,7 @@
 #include <grpc/support/useful.h>
 
 #include "src/core/ext/transport/chttp2/transport/incoming_metadata.h"
+#include "src/core/ext/transport/cronet/transport/cronet_transport.h"
 #include "src/core/lib/iomgr/endpoint.h"
 #include "src/core/lib/iomgr/exec_ctx.h"
 #include "src/core/lib/slice/slice_internal.h"
@@ -288,7 +289,7 @@
       CRONET_LOG(GPR_DEBUG, "%p: Flush read", s);
       s->state.flush_read = true;
       null_and_maybe_free_read_buffer(s);
-      s->state.rs.read_buffer = gpr_malloc(GRPC_FLUSH_READ_SIZE);
+      s->state.rs.read_buffer = (char *)gpr_malloc(GRPC_FLUSH_READ_SIZE);
       if (!s->state.pending_read_from_cronet) {
         CRONET_LOG(GPR_DEBUG, "bidirectional_stream_read(%p)", s->cbs);
         bidirectional_stream_read(s->cbs, s->state.rs.read_buffer,
@@ -313,7 +314,8 @@
   struct op_storage *storage = &s->storage;
   /* add new op at the beginning of the linked list. The memory is freed
   in remove_from_storage */
-  struct op_and_state *new_op = gpr_malloc(sizeof(struct op_and_state));
+  struct op_and_state *new_op =
+      (struct op_and_state *)gpr_malloc(sizeof(struct op_and_state));
   memcpy(&new_op->op, op, sizeof(grpc_transport_stream_op_batch));
   memset(&new_op->state, 0, sizeof(new_op->state));
   new_op->s = s;
@@ -685,7 +687,7 @@
   size_t length = GRPC_SLICE_LENGTH(slice);
   *p_write_buffer_size = length + GRPC_HEADER_SIZE_IN_BYTES;
   /* This is freed in the on_write_completed callback */
-  char *write_buffer = gpr_malloc(length + GRPC_HEADER_SIZE_IN_BYTES);
+  char *write_buffer = (char *)gpr_malloc(length + GRPC_HEADER_SIZE_IN_BYTES);
   *pp_write_buffer = write_buffer;
   uint8_t *p = (uint8_t *)write_buffer;
   /* Append 5 byte header */
@@ -1182,7 +1184,7 @@
                    stream_state->rs.length_field);
         if (stream_state->rs.length_field > 0) {
           stream_state->rs.read_buffer =
-              gpr_malloc((size_t)stream_state->rs.length_field);
+              (char *)gpr_malloc((size_t)stream_state->rs.length_field);
           GPR_ASSERT(stream_state->rs.read_buffer);
           stream_state->rs.remaining_bytes = stream_state->rs.length_field;
           stream_state->rs.received_bytes = 0;
@@ -1452,13 +1454,14 @@
 grpc_transport *grpc_create_cronet_transport(void *engine, const char *target,
                                              const grpc_channel_args *args,
                                              void *reserved) {
-  grpc_cronet_transport *ct = gpr_malloc(sizeof(grpc_cronet_transport));
+  grpc_cronet_transport *ct =
+      (grpc_cronet_transport *)gpr_malloc(sizeof(grpc_cronet_transport));
   if (!ct) {
     goto error;
   }
   ct->base.vtable = &grpc_cronet_vtable;
-  ct->engine = engine;
-  ct->host = gpr_malloc(strlen(target) + 1);
+  ct->engine = (stream_engine *)engine;
+  ct->host = (char *)gpr_malloc(strlen(target) + 1);
   if (!ct->host) {
     goto error;
   }
diff --git a/src/core/ext/transport/cronet/transport/cronet_transport.h b/src/core/ext/transport/cronet/transport/cronet_transport.h
index 3bd4249..43ff391 100644
--- a/src/core/ext/transport/cronet/transport/cronet_transport.h
+++ b/src/core/ext/transport/cronet/transport/cronet_transport.h
@@ -21,8 +21,16 @@
 
 #include "src/core/lib/transport/transport.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 grpc_transport *grpc_create_cronet_transport(void *engine, const char *target,
                                              const grpc_channel_args *args,
                                              void *reserved);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_EXT_TRANSPORT_CRONET_TRANSPORT_CRONET_TRANSPORT_H */
diff --git a/src/core/ext/transport/inproc/inproc_plugin.c b/src/core/ext/transport/inproc/inproc_plugin.cc
similarity index 85%
rename from src/core/ext/transport/inproc/inproc_plugin.c
rename to src/core/ext/transport/inproc/inproc_plugin.cc
index 6a796a0..5d8a1c7 100644
--- a/src/core/ext/transport/inproc/inproc_plugin.c
+++ b/src/core/ext/transport/inproc/inproc_plugin.cc
@@ -21,9 +21,11 @@
 
 grpc_tracer_flag grpc_inproc_trace = GRPC_TRACER_INITIALIZER(false, "inproc");
 
-void grpc_inproc_plugin_init(void) {
+extern "C" void grpc_inproc_plugin_init(void) {
   grpc_register_tracer(&grpc_inproc_trace);
   grpc_inproc_transport_init();
 }
 
-void grpc_inproc_plugin_shutdown(void) { grpc_inproc_transport_shutdown(); }
+extern "C" void grpc_inproc_plugin_shutdown(void) {
+  grpc_inproc_transport_shutdown();
+}
diff --git a/src/core/ext/transport/inproc/inproc_transport.c b/src/core/ext/transport/inproc/inproc_transport.cc
similarity index 100%
rename from src/core/ext/transport/inproc/inproc_transport.c
rename to src/core/ext/transport/inproc/inproc_transport.cc
diff --git a/src/core/lib/channel/channel_args.c b/src/core/lib/channel/channel_args.cc
similarity index 100%
rename from src/core/lib/channel/channel_args.c
rename to src/core/lib/channel/channel_args.cc
diff --git a/src/core/lib/channel/channel_args.h b/src/core/lib/channel/channel_args.h
index 0599e18..2837174 100644
--- a/src/core/lib/channel/channel_args.h
+++ b/src/core/lib/channel/channel_args.h
@@ -23,6 +23,10 @@
 #include <grpc/grpc.h>
 #include "src/core/lib/iomgr/socket_mutator.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 // Channel args are intentionally immutable, to avoid the need for locking.
 
 /** Copy the arguments in \a src into a new instance */
@@ -149,4 +153,8 @@
 grpc_arg grpc_channel_arg_pointer_create(char *name, void *value,
                                          const grpc_arg_pointer_vtable *vtable);
 
-#endif /* GRPC_CORE_LIB_CHANNEL_CHANNEL_ARGS_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_CHANNEL_CHANNEL_ARGS_H */
\ No newline at end of file
diff --git a/src/core/lib/channel/channel_stack.c b/src/core/lib/channel/channel_stack.cc
similarity index 100%
rename from src/core/lib/channel/channel_stack.c
rename to src/core/lib/channel/channel_stack.cc
diff --git a/src/core/lib/channel/channel_stack_builder.c b/src/core/lib/channel/channel_stack_builder.cc
similarity index 100%
rename from src/core/lib/channel/channel_stack_builder.c
rename to src/core/lib/channel/channel_stack_builder.cc
diff --git a/src/core/lib/channel/connected_channel.c b/src/core/lib/channel/connected_channel.cc
similarity index 100%
rename from src/core/lib/channel/connected_channel.c
rename to src/core/lib/channel/connected_channel.cc
diff --git a/src/core/lib/channel/connected_channel.h b/src/core/lib/channel/connected_channel.h
index 10c98cc..b55a108 100644
--- a/src/core/lib/channel/connected_channel.h
+++ b/src/core/lib/channel/connected_channel.h
@@ -21,6 +21,10 @@
 
 #include "src/core/lib/channel/channel_stack_builder.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 extern const grpc_channel_filter grpc_connected_filter;
 
 bool grpc_add_connected_filter(grpc_exec_ctx *exec_ctx,
@@ -30,4 +34,8 @@
 /* Debug helper to dig the transport stream out of a call element */
 grpc_stream *grpc_connected_channel_get_stream(grpc_call_element *elem);
 
-#endif /* GRPC_CORE_LIB_CHANNEL_CONNECTED_CHANNEL_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_CHANNEL_CONNECTED_CHANNEL_H */
\ No newline at end of file
diff --git a/src/core/lib/channel/handshaker.c b/src/core/lib/channel/handshaker.cc
similarity index 100%
rename from src/core/lib/channel/handshaker.c
rename to src/core/lib/channel/handshaker.cc
diff --git a/src/core/lib/channel/handshaker.h b/src/core/lib/channel/handshaker.h
index eb9a59b..a857cde 100644
--- a/src/core/lib/channel/handshaker.h
+++ b/src/core/lib/channel/handshaker.h
@@ -26,6 +26,10 @@
 #include "src/core/lib/iomgr/exec_ctx.h"
 #include "src/core/lib/iomgr/tcp_server.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /// Handshakers are used to perform initial handshakes on a connection
 /// before the client sends the initial request.  Some examples of what
 /// a handshaker can be used for includes support for HTTP CONNECT on
@@ -164,4 +168,8 @@
 void grpc_handshake_manager_pending_list_shutdown_all(
     grpc_exec_ctx* exec_ctx, grpc_handshake_manager* head, grpc_error* why);
 
-#endif /* GRPC_CORE_LIB_CHANNEL_HANDSHAKER_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_CHANNEL_HANDSHAKER_H */
\ No newline at end of file
diff --git a/src/core/lib/channel/handshaker_factory.c b/src/core/lib/channel/handshaker_factory.cc
similarity index 100%
rename from src/core/lib/channel/handshaker_factory.c
rename to src/core/lib/channel/handshaker_factory.cc
diff --git a/src/core/lib/channel/handshaker_factory.h b/src/core/lib/channel/handshaker_factory.h
index 6238e73..2a130de 100644
--- a/src/core/lib/channel/handshaker_factory.h
+++ b/src/core/lib/channel/handshaker_factory.h
@@ -24,6 +24,10 @@
 #include "src/core/lib/channel/handshaker.h"
 #include "src/core/lib/iomgr/exec_ctx.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 // A handshaker factory is used to create handshakers.
 
 typedef struct grpc_handshaker_factory grpc_handshaker_factory;
@@ -48,4 +52,8 @@
 void grpc_handshaker_factory_destroy(
     grpc_exec_ctx *exec_ctx, grpc_handshaker_factory *handshaker_factory);
 
-#endif /* GRPC_CORE_LIB_CHANNEL_HANDSHAKER_FACTORY_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_CHANNEL_HANDSHAKER_FACTORY_H */
\ No newline at end of file
diff --git a/src/core/lib/channel/handshaker_registry.c b/src/core/lib/channel/handshaker_registry.cc
similarity index 100%
rename from src/core/lib/channel/handshaker_registry.c
rename to src/core/lib/channel/handshaker_registry.cc
diff --git a/src/core/lib/channel/handshaker_registry.h b/src/core/lib/channel/handshaker_registry.h
index a3b2ac1..e96bf06 100644
--- a/src/core/lib/channel/handshaker_registry.h
+++ b/src/core/lib/channel/handshaker_registry.h
@@ -24,6 +24,10 @@
 #include "src/core/lib/channel/handshaker_factory.h"
 #include "src/core/lib/iomgr/exec_ctx.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef enum {
   HANDSHAKER_CLIENT = 0,
   HANDSHAKER_SERVER,
@@ -45,4 +49,8 @@
                           const grpc_channel_args* args,
                           grpc_handshake_manager* handshake_mgr);
 
-#endif /* GRPC_CORE_LIB_CHANNEL_HANDSHAKER_REGISTRY_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_CHANNEL_HANDSHAKER_REGISTRY_H */
\ No newline at end of file
diff --git a/src/core/lib/compression/algorithm_metadata.h b/src/core/lib/compression/algorithm_metadata.h
index 08feafc..3eb7088 100644
--- a/src/core/lib/compression/algorithm_metadata.h
+++ b/src/core/lib/compression/algorithm_metadata.h
@@ -22,6 +22,10 @@
 #include <grpc/compression.h>
 #include "src/core/lib/transport/metadata.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /** Return compression algorithm based metadata value */
 grpc_slice grpc_compression_algorithm_slice(
     grpc_compression_algorithm algorithm);
@@ -49,4 +53,8 @@
 grpc_stream_compression_algorithm grpc_stream_compression_algorithm_from_slice(
     grpc_slice str);
 
-#endif /* GRPC_CORE_LIB_COMPRESSION_ALGORITHM_METADATA_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_COMPRESSION_ALGORITHM_METADATA_H */
\ No newline at end of file
diff --git a/src/core/lib/compression/compression.c b/src/core/lib/compression/compression.cc
similarity index 100%
rename from src/core/lib/compression/compression.c
rename to src/core/lib/compression/compression.cc
diff --git a/src/core/lib/compression/message_compress.c b/src/core/lib/compression/message_compress.cc
similarity index 100%
rename from src/core/lib/compression/message_compress.c
rename to src/core/lib/compression/message_compress.cc
diff --git a/src/core/lib/compression/message_compress.h b/src/core/lib/compression/message_compress.h
index ca8ca37..d2545a0 100644
--- a/src/core/lib/compression/message_compress.h
+++ b/src/core/lib/compression/message_compress.h
@@ -22,6 +22,10 @@
 #include <grpc/compression.h>
 #include <grpc/slice_buffer.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* compress 'input' to 'output' using 'algorithm'.
    On success, appends compressed slices to output and returns 1.
    On failure, appends uncompressed slices to output and returns 0. */
@@ -36,4 +40,8 @@
                         grpc_compression_algorithm algorithm,
                         grpc_slice_buffer* input, grpc_slice_buffer* output);
 
-#endif /* GRPC_CORE_LIB_COMPRESSION_MESSAGE_COMPRESS_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_COMPRESSION_MESSAGE_COMPRESS_H */
\ No newline at end of file
diff --git a/src/core/lib/compression/stream_compression.c b/src/core/lib/compression/stream_compression.cc
similarity index 97%
rename from src/core/lib/compression/stream_compression.c
rename to src/core/lib/compression/stream_compression.cc
index 411489f..7faeb0d 100644
--- a/src/core/lib/compression/stream_compression.c
+++ b/src/core/lib/compression/stream_compression.cc
@@ -21,7 +21,7 @@
 #include "src/core/lib/compression/stream_compression.h"
 #include "src/core/lib/compression/stream_compression_gzip.h"
 
-extern const grpc_stream_compression_vtable
+extern "C" const grpc_stream_compression_vtable
     grpc_stream_compression_identity_vtable;
 
 bool grpc_stream_compress(grpc_stream_compression_context *ctx,
diff --git a/src/core/lib/compression/stream_compression.h b/src/core/lib/compression/stream_compression.h
index 6d07328..6ee3ac1 100644
--- a/src/core/lib/compression/stream_compression.h
+++ b/src/core/lib/compression/stream_compression.h
@@ -26,6 +26,10 @@
 
 #include "src/core/lib/transport/static_metadata.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct grpc_stream_compression_vtable grpc_stream_compression_vtable;
 
 /* Stream compression/decompression context */
@@ -111,4 +115,8 @@
 int grpc_stream_compression_method_parse(
     grpc_slice value, bool is_compress, grpc_stream_compression_method *method);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif
diff --git a/src/core/lib/compression/stream_compression_gzip.c b/src/core/lib/compression/stream_compression_gzip.cc
similarity index 96%
rename from src/core/lib/compression/stream_compression_gzip.c
rename to src/core/lib/compression/stream_compression_gzip.cc
index abcbdb3..087b018 100644
--- a/src/core/lib/compression/stream_compression_gzip.c
+++ b/src/core/lib/compression/stream_compression_gzip.cc
@@ -222,7 +222,6 @@
 }
 
 const grpc_stream_compression_vtable grpc_stream_compression_gzip_vtable = {
-    .compress = grpc_stream_compress_gzip,
-    .decompress = grpc_stream_decompress_gzip,
-    .context_create = grpc_stream_compression_context_create_gzip,
-    .context_destroy = grpc_stream_compression_context_destroy_gzip};
+    grpc_stream_compress_gzip, grpc_stream_decompress_gzip,
+    grpc_stream_compression_context_create_gzip,
+    grpc_stream_compression_context_destroy_gzip};
diff --git a/src/core/lib/compression/stream_compression_gzip.h b/src/core/lib/compression/stream_compression_gzip.h
index 7cf49a0..a3f1b04 100644
--- a/src/core/lib/compression/stream_compression_gzip.h
+++ b/src/core/lib/compression/stream_compression_gzip.h
@@ -21,6 +21,14 @@
 
 #include "src/core/lib/compression/stream_compression.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 extern const grpc_stream_compression_vtable grpc_stream_compression_gzip_vtable;
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif
diff --git a/src/core/lib/compression/stream_compression_identity.c b/src/core/lib/compression/stream_compression_identity.cc
similarity index 90%
rename from src/core/lib/compression/stream_compression_identity.c
rename to src/core/lib/compression/stream_compression_identity.cc
index 3dfcf53..9b2e606 100644
--- a/src/core/lib/compression/stream_compression_identity.c
+++ b/src/core/lib/compression/stream_compression_identity.cc
@@ -27,7 +27,7 @@
 
 /* Singleton context used for all identity streams. */
 static grpc_stream_compression_context identity_ctx = {
-    .vtable = &grpc_stream_compression_identity_vtable};
+    &grpc_stream_compression_identity_vtable};
 
 static void grpc_stream_compression_pass_through(grpc_slice_buffer *in,
                                                  grpc_slice_buffer *out,
@@ -88,7 +88,6 @@
 }
 
 const grpc_stream_compression_vtable grpc_stream_compression_identity_vtable = {
-    .compress = grpc_stream_compress_identity,
-    .decompress = grpc_stream_decompress_identity,
-    .context_create = grpc_stream_compression_context_create_identity,
-    .context_destroy = grpc_stream_compression_context_destroy_identity};
+    grpc_stream_compress_identity, grpc_stream_decompress_identity,
+    grpc_stream_compression_context_create_identity,
+    grpc_stream_compression_context_destroy_identity};
diff --git a/src/core/lib/compression/stream_compression_identity.h b/src/core/lib/compression/stream_compression_identity.h
index 41926e9..3a729fa 100644
--- a/src/core/lib/compression/stream_compression_identity.h
+++ b/src/core/lib/compression/stream_compression_identity.h
@@ -21,7 +21,15 @@
 
 #include "src/core/lib/compression/stream_compression.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 extern const grpc_stream_compression_vtable
     grpc_stream_compression_identity_vtable;
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif
diff --git a/src/core/lib/debug/stats.c b/src/core/lib/debug/stats.cc
similarity index 100%
rename from src/core/lib/debug/stats.c
rename to src/core/lib/debug/stats.cc
diff --git a/src/core/lib/debug/stats.h b/src/core/lib/debug/stats.h
index 09d190d..fec1d65 100644
--- a/src/core/lib/debug/stats.h
+++ b/src/core/lib/debug/stats.h
@@ -23,6 +23,10 @@
 #include "src/core/lib/debug/stats_data.h"
 #include "src/core/lib/iomgr/exec_ctx.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct grpc_stats_data {
   gpr_atm counters[GRPC_STATS_COUNTER_COUNT];
   gpr_atm histograms[GRPC_STATS_HISTOGRAM_BUCKETS];
@@ -58,4 +62,8 @@
 size_t grpc_stats_histo_count(const grpc_stats_data *data,
                               grpc_stats_histograms histogram);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif
diff --git a/src/core/lib/debug/stats_data.c b/src/core/lib/debug/stats_data.cc
similarity index 100%
rename from src/core/lib/debug/stats_data.c
rename to src/core/lib/debug/stats_data.cc
diff --git a/src/core/lib/debug/stats_data.h b/src/core/lib/debug/stats_data.h
index 28dab00..cf5bafb 100644
--- a/src/core/lib/debug/stats_data.h
+++ b/src/core/lib/debug/stats_data.h
@@ -24,6 +24,10 @@
 #include <inttypes.h>
 #include "src/core/lib/iomgr/exec_ctx.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef enum {
   GRPC_STATS_COUNTER_CLIENT_CALLS_CREATED,
   GRPC_STATS_COUNTER_SERVER_CALLS_CREATED,
@@ -467,4 +471,8 @@
 extern void (*const grpc_stats_inc_histogram[13])(grpc_exec_ctx *exec_ctx,
                                                   int x);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_DEBUG_STATS_DATA_H */
diff --git a/src/core/lib/debug/trace.c b/src/core/lib/debug/trace.cc
similarity index 98%
rename from src/core/lib/debug/trace.c
rename to src/core/lib/debug/trace.cc
index 7cb2789..21b0d8c 100644
--- a/src/core/lib/debug/trace.c
+++ b/src/core/lib/debug/trace.cc
@@ -20,6 +20,7 @@
 
 #include <string.h>
 
+#include <grpc/grpc.h>
 #include <grpc/support/alloc.h>
 #include <grpc/support/log.h>
 #include "src/core/lib/support/env.h"
diff --git a/src/core/lib/debug/trace.h b/src/core/lib/debug/trace.h
index 64f2e3f..558ba94 100644
--- a/src/core/lib/debug/trace.h
+++ b/src/core/lib/debug/trace.h
@@ -23,6 +23,10 @@
 #include <grpc/support/port_platform.h>
 #include <stdbool.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #if defined(__has_feature)
 #if __has_feature(thread_sanitizer)
 #define GRPC_THREADSAFE_TRACER
@@ -52,4 +56,8 @@
 void grpc_tracer_init(const char *env_var_name);
 void grpc_tracer_shutdown(void);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_DEBUG_TRACE_H */
diff --git a/src/core/lib/http/format_request.c b/src/core/lib/http/format_request.cc
similarity index 100%
rename from src/core/lib/http/format_request.c
rename to src/core/lib/http/format_request.cc
diff --git a/src/core/lib/http/format_request.h b/src/core/lib/http/format_request.h
index 12b42e4..a559aac 100644
--- a/src/core/lib/http/format_request.h
+++ b/src/core/lib/http/format_request.h
@@ -22,6 +22,10 @@
 #include <grpc/slice.h>
 #include "src/core/lib/http/httpcli.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 grpc_slice grpc_httpcli_format_get_request(const grpc_httpcli_request *request);
 grpc_slice grpc_httpcli_format_post_request(const grpc_httpcli_request *request,
                                             const char *body_bytes,
@@ -29,4 +33,8 @@
 grpc_slice grpc_httpcli_format_connect_request(
     const grpc_httpcli_request *request);
 
-#endif /* GRPC_CORE_LIB_HTTP_FORMAT_REQUEST_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_HTTP_FORMAT_REQUEST_H */
\ No newline at end of file
diff --git a/src/core/lib/http/httpcli.c b/src/core/lib/http/httpcli.cc
similarity index 100%
rename from src/core/lib/http/httpcli.c
rename to src/core/lib/http/httpcli.cc
diff --git a/src/core/lib/http/httpcli.h b/src/core/lib/http/httpcli.h
index 8096186..630481d 100644
--- a/src/core/lib/http/httpcli.h
+++ b/src/core/lib/http/httpcli.h
@@ -32,6 +32,10 @@
 /* User agent this library reports */
 #define GRPC_HTTPCLI_USER_AGENT "grpc-httpcli/0.0"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Tracks in-progress http requests
    TODO(ctiller): allow caching and capturing multiple requests for the
                   same content and combining them */
@@ -123,4 +127,8 @@
 void grpc_httpcli_set_override(grpc_httpcli_get_override get,
                                grpc_httpcli_post_override post);
 
-#endif /* GRPC_CORE_LIB_HTTP_HTTPCLI_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_HTTP_HTTPCLI_H */
\ No newline at end of file
diff --git a/src/core/lib/http/httpcli_security_connector.c b/src/core/lib/http/httpcli_security_connector.cc
similarity index 95%
rename from src/core/lib/http/httpcli_security_connector.c
rename to src/core/lib/http/httpcli_security_connector.cc
index c553fa3..8a0f225 100644
--- a/src/core/lib/http/httpcli_security_connector.c
+++ b/src/core/lib/http/httpcli_security_connector.cc
@@ -106,7 +106,8 @@
     return GRPC_SECURITY_ERROR;
   }
 
-  c = gpr_zalloc(sizeof(grpc_httpcli_ssl_channel_security_connector));
+  c = (grpc_httpcli_ssl_channel_security_connector *)gpr_zalloc(
+      sizeof(grpc_httpcli_ssl_channel_security_connector));
 
   gpr_ref_init(&c->base.base.refcount, 1);
   c->base.base.vtable = &httpcli_ssl_vtable;
@@ -137,8 +138,8 @@
 
 static void on_handshake_done(grpc_exec_ctx *exec_ctx, void *arg,
                               grpc_error *error) {
-  grpc_handshaker_args *args = arg;
-  on_done_closure *c = args->user_data;
+  grpc_handshaker_args *args = (grpc_handshaker_args *)arg;
+  on_done_closure *c = (on_done_closure *)args->user_data;
   if (error != GRPC_ERROR_NONE) {
     const char *msg = grpc_error_string(error);
     gpr_log(GPR_ERROR, "Secure transport setup failed: %s", msg);
@@ -159,7 +160,7 @@
                           gpr_timespec deadline,
                           void (*on_done)(grpc_exec_ctx *exec_ctx, void *arg,
                                           grpc_endpoint *endpoint)) {
-  on_done_closure *c = gpr_malloc(sizeof(*c));
+  on_done_closure *c = (on_done_closure *)gpr_malloc(sizeof(*c));
   const char *pem_root_certs = grpc_get_default_ssl_roots();
   if (pem_root_certs == NULL) {
     gpr_log(GPR_ERROR, "Could not get default pem root certs.");
diff --git a/src/core/lib/http/parser.c b/src/core/lib/http/parser.cc
similarity index 100%
rename from src/core/lib/http/parser.c
rename to src/core/lib/http/parser.cc
diff --git a/src/core/lib/http/parser.h b/src/core/lib/http/parser.h
index c8dced3..5484948 100644
--- a/src/core/lib/http/parser.h
+++ b/src/core/lib/http/parser.h
@@ -27,6 +27,10 @@
 /* Maximum length of a header string of the form 'Key: Value\r\n' */
 #define GRPC_HTTP_PARSER_MAX_HEADER_LENGTH 4096
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* A single header to be passed in a request */
 typedef struct grpc_http_header {
   char *key;
@@ -109,4 +113,8 @@
 
 extern grpc_tracer_flag grpc_http1_trace;
 
-#endif /* GRPC_CORE_LIB_HTTP_PARSER_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_HTTP_PARSER_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/call_combiner.c b/src/core/lib/iomgr/call_combiner.cc
similarity index 99%
rename from src/core/lib/iomgr/call_combiner.c
rename to src/core/lib/iomgr/call_combiner.cc
index 48d8eae..bab3df0 100644
--- a/src/core/lib/iomgr/call_combiner.c
+++ b/src/core/lib/iomgr/call_combiner.cc
@@ -18,6 +18,8 @@
 
 #include "src/core/lib/iomgr/call_combiner.h"
 
+#include <inttypes.h>
+
 #include <grpc/support/log.h>
 
 grpc_tracer_flag grpc_call_combiner_trace =
diff --git a/src/core/lib/iomgr/call_combiner.h b/src/core/lib/iomgr/call_combiner.h
index 5cfb3f0..527f84f 100644
--- a/src/core/lib/iomgr/call_combiner.h
+++ b/src/core/lib/iomgr/call_combiner.h
@@ -27,6 +27,10 @@
 #include "src/core/lib/iomgr/exec_ctx.h"
 #include "src/core/lib/support/mpscq.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 // A simple, lock-free mechanism for serializing activity related to a
 // single call.  This is similar to a combiner but is more lightweight.
 //
@@ -118,4 +122,8 @@
                                grpc_call_combiner* call_combiner,
                                grpc_error* error);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_IOMGR_CALL_COMBINER_H */
diff --git a/src/core/lib/iomgr/closure.c b/src/core/lib/iomgr/closure.cc
similarity index 100%
rename from src/core/lib/iomgr/closure.c
rename to src/core/lib/iomgr/closure.cc
diff --git a/src/core/lib/iomgr/combiner.c b/src/core/lib/iomgr/combiner.cc
similarity index 99%
rename from src/core/lib/iomgr/combiner.c
rename to src/core/lib/iomgr/combiner.cc
index f899b25..0e707ef 100644
--- a/src/core/lib/iomgr/combiner.c
+++ b/src/core/lib/iomgr/combiner.cc
@@ -19,6 +19,7 @@
 #include "src/core/lib/iomgr/combiner.h"
 
 #include <assert.h>
+#include <inttypes.h>
 #include <string.h>
 
 #include <grpc/support/alloc.h>
diff --git a/src/core/lib/iomgr/combiner.h b/src/core/lib/iomgr/combiner.h
index 8e04343..10e5fb4 100644
--- a/src/core/lib/iomgr/combiner.h
+++ b/src/core/lib/iomgr/combiner.h
@@ -26,6 +26,10 @@
 #include "src/core/lib/iomgr/exec_ctx.h"
 #include "src/core/lib/support/mpscq.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 // Provides serialized access to some resource.
 // Each action queued on a combiner is executed serially in a borrowed thread.
 // The actual thread executing actions may change over time (but there will only
@@ -63,4 +67,8 @@
 
 extern grpc_tracer_flag grpc_combiner_trace;
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_IOMGR_COMBINER_H */
diff --git a/src/core/lib/iomgr/endpoint.c b/src/core/lib/iomgr/endpoint.cc
similarity index 100%
rename from src/core/lib/iomgr/endpoint.c
rename to src/core/lib/iomgr/endpoint.cc
diff --git a/src/core/lib/iomgr/endpoint.h b/src/core/lib/iomgr/endpoint.h
index 8f0523a..16ff0ab 100644
--- a/src/core/lib/iomgr/endpoint.h
+++ b/src/core/lib/iomgr/endpoint.h
@@ -26,6 +26,10 @@
 #include "src/core/lib/iomgr/pollset_set.h"
 #include "src/core/lib/iomgr/resource_quota.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* An endpoint caps a streaming channel between two communicating processes.
    Examples may be: a tcp socket, <stdin+stdout>, or some shared memory. */
 
@@ -95,4 +99,8 @@
   const grpc_endpoint_vtable *vtable;
 };
 
-#endif /* GRPC_CORE_LIB_IOMGR_ENDPOINT_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_ENDPOINT_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/endpoint_pair.h b/src/core/lib/iomgr/endpoint_pair.h
index b60e62f..f883002 100644
--- a/src/core/lib/iomgr/endpoint_pair.h
+++ b/src/core/lib/iomgr/endpoint_pair.h
@@ -21,6 +21,10 @@
 
 #include "src/core/lib/iomgr/endpoint.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct {
   grpc_endpoint *client;
   grpc_endpoint *server;
@@ -29,4 +33,8 @@
 grpc_endpoint_pair grpc_iomgr_create_endpoint_pair(const char *name,
                                                    grpc_channel_args *args);
 
-#endif /* GRPC_CORE_LIB_IOMGR_ENDPOINT_PAIR_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_ENDPOINT_PAIR_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/endpoint_pair_posix.c b/src/core/lib/iomgr/endpoint_pair_posix.cc
similarity index 100%
rename from src/core/lib/iomgr/endpoint_pair_posix.c
rename to src/core/lib/iomgr/endpoint_pair_posix.cc
diff --git a/src/core/lib/iomgr/endpoint_pair_uv.c b/src/core/lib/iomgr/endpoint_pair_uv.cc
similarity index 100%
rename from src/core/lib/iomgr/endpoint_pair_uv.c
rename to src/core/lib/iomgr/endpoint_pair_uv.cc
diff --git a/src/core/lib/iomgr/endpoint_pair_windows.c b/src/core/lib/iomgr/endpoint_pair_windows.cc
similarity index 100%
rename from src/core/lib/iomgr/endpoint_pair_windows.c
rename to src/core/lib/iomgr/endpoint_pair_windows.cc
diff --git a/src/core/lib/iomgr/error.c b/src/core/lib/iomgr/error.cc
similarity index 99%
rename from src/core/lib/iomgr/error.c
rename to src/core/lib/iomgr/error.cc
index aa05501..2ea6cf1 100644
--- a/src/core/lib/iomgr/error.c
+++ b/src/core/lib/iomgr/error.cc
@@ -15,9 +15,11 @@
  * limitations under the License.
  *
  */
+#include <grpc/support/port_platform.h>
 
 #include "src/core/lib/iomgr/error.h"
 
+#include <inttypes.h>
 #include <string.h>
 
 #include <grpc/status.h>
diff --git a/src/core/lib/iomgr/error.h b/src/core/lib/iomgr/error.h
index b362948..b36330a 100644
--- a/src/core/lib/iomgr/error.h
+++ b/src/core/lib/iomgr/error.h
@@ -19,8 +19,8 @@
 #ifndef GRPC_CORE_LIB_IOMGR_ERROR_H
 #define GRPC_CORE_LIB_IOMGR_ERROR_H
 
+#include <inttypes.h>
 #include <stdbool.h>
-#include <stdint.h>
 
 #include <grpc/slice.h>
 #include <grpc/status.h>
diff --git a/src/core/lib/iomgr/error_internal.h b/src/core/lib/iomgr/error_internal.h
index 7507484..f718e06 100644
--- a/src/core/lib/iomgr/error_internal.h
+++ b/src/core/lib/iomgr/error_internal.h
@@ -24,6 +24,10 @@
 
 #include <grpc/support/sync.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct grpc_linked_error grpc_linked_error;
 
 struct grpc_linked_error {
@@ -57,4 +61,8 @@
 
 bool grpc_error_is_special(grpc_error *err);
 
-#endif /* GRPC_CORE_LIB_IOMGR_ERROR_INTERNAL_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_ERROR_INTERNAL_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/ev_epoll1_linux.c b/src/core/lib/iomgr/ev_epoll1_linux.cc
similarity index 99%
rename from src/core/lib/iomgr/ev_epoll1_linux.c
rename to src/core/lib/iomgr/ev_epoll1_linux.cc
index 3ac12ab..689aac1 100644
--- a/src/core/lib/iomgr/ev_epoll1_linux.c
+++ b/src/core/lib/iomgr/ev_epoll1_linux.cc
@@ -20,7 +20,6 @@
 
 /* This polling engine is only relevant on linux kernels supporting epoll() */
 #ifdef GRPC_LINUX_EPOLL
-
 #include "src/core/lib/iomgr/ev_epoll1_linux.h"
 
 #include <assert.h>
@@ -1257,7 +1256,7 @@
 
 #else /* defined(GRPC_LINUX_EPOLL) */
 #if defined(GRPC_POSIX_SOCKET)
-#include "src/core/lib/iomgr/ev_posix.h"
+#include "src/core/lib/iomgr/ev_epoll1_linux.h"
 /* If GRPC_LINUX_EPOLL is not defined, it means epoll is not available. Return
  * NULL */
 const grpc_event_engine_vtable *grpc_init_epoll1_linux(bool explicit_request) {
diff --git a/src/core/lib/iomgr/ev_epoll1_linux.h b/src/core/lib/iomgr/ev_epoll1_linux.h
index 0696e0d..66fd826 100644
--- a/src/core/lib/iomgr/ev_epoll1_linux.h
+++ b/src/core/lib/iomgr/ev_epoll1_linux.h
@@ -22,8 +22,16 @@
 #include "src/core/lib/iomgr/ev_posix.h"
 #include "src/core/lib/iomgr/port.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 // a polling engine that utilizes a singleton epoll set and turnstile polling
 
 const grpc_event_engine_vtable *grpc_init_epoll1_linux(bool explicit_request);
 
-#endif /* GRPC_CORE_LIB_IOMGR_EV_EPOLL1_LINUX_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_EV_EPOLL1_LINUX_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/ev_epollex_linux.c b/src/core/lib/iomgr/ev_epollex_linux.cc
similarity index 99%
rename from src/core/lib/iomgr/ev_epollex_linux.c
rename to src/core/lib/iomgr/ev_epollex_linux.cc
index 8eb4de4..bed47e4 100644
--- a/src/core/lib/iomgr/ev_epollex_linux.c
+++ b/src/core/lib/iomgr/ev_epollex_linux.cc
@@ -1449,7 +1449,7 @@
 
 #else /* defined(GRPC_LINUX_EPOLL) */
 #if defined(GRPC_POSIX_SOCKET)
-#include "src/core/lib/iomgr/ev_posix.h"
+#include "src/core/lib/iomgr/ev_epollex_linux.h"
 /* If GRPC_LINUX_EPOLL is not defined, it means epoll is not available. Return
  * NULL */
 const grpc_event_engine_vtable *grpc_init_epollex_linux(
diff --git a/src/core/lib/iomgr/ev_epollex_linux.h b/src/core/lib/iomgr/ev_epollex_linux.h
index cff9b43..58cc5a2 100644
--- a/src/core/lib/iomgr/ev_epollex_linux.h
+++ b/src/core/lib/iomgr/ev_epollex_linux.h
@@ -22,7 +22,15 @@
 #include "src/core/lib/iomgr/ev_posix.h"
 #include "src/core/lib/iomgr/port.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 const grpc_event_engine_vtable *grpc_init_epollex_linux(
     bool explicitly_requested);
 
-#endif /* GRPC_CORE_LIB_IOMGR_EV_EPOLLEX_LINUX_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_EV_EPOLLEX_LINUX_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/ev_epollsig_linux.c b/src/core/lib/iomgr/ev_epollsig_linux.cc
similarity index 99%
rename from src/core/lib/iomgr/ev_epollsig_linux.c
rename to src/core/lib/iomgr/ev_epollsig_linux.cc
index 4d8bdf1..c8e07c6 100644
--- a/src/core/lib/iomgr/ev_epollsig_linux.c
+++ b/src/core/lib/iomgr/ev_epollsig_linux.cc
@@ -1756,7 +1756,7 @@
 
 #else /* defined(GRPC_LINUX_EPOLL) */
 #if defined(GRPC_POSIX_SOCKET)
-#include "src/core/lib/iomgr/ev_posix.h"
+#include "src/core/lib/iomgr/ev_epollsig_linux.h"
 /* If GRPC_LINUX_EPOLL is not defined, it means epoll is not available. Return
  * NULL */
 const grpc_event_engine_vtable *grpc_init_epollsig_linux(
diff --git a/src/core/lib/iomgr/ev_epollsig_linux.h b/src/core/lib/iomgr/ev_epollsig_linux.h
index 8832868..c04ff27 100644
--- a/src/core/lib/iomgr/ev_epollsig_linux.h
+++ b/src/core/lib/iomgr/ev_epollsig_linux.h
@@ -22,6 +22,10 @@
 #include "src/core/lib/iomgr/ev_posix.h"
 #include "src/core/lib/iomgr/port.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 const grpc_event_engine_vtable *grpc_init_epollsig_linux(bool explicit_request);
 
 #ifdef GRPC_LINUX_EPOLL
@@ -30,4 +34,8 @@
 bool grpc_are_polling_islands_equal(void *p, void *q);
 #endif /* defined(GRPC_LINUX_EPOLL) */
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_IOMGR_EV_EPOLLSIG_LINUX_H */
diff --git a/src/core/lib/iomgr/ev_poll_posix.c b/src/core/lib/iomgr/ev_poll_posix.cc
similarity index 100%
rename from src/core/lib/iomgr/ev_poll_posix.c
rename to src/core/lib/iomgr/ev_poll_posix.cc
diff --git a/src/core/lib/iomgr/ev_poll_posix.h b/src/core/lib/iomgr/ev_poll_posix.h
index d444e60..84b6815 100644
--- a/src/core/lib/iomgr/ev_poll_posix.h
+++ b/src/core/lib/iomgr/ev_poll_posix.h
@@ -21,7 +21,15 @@
 
 #include "src/core/lib/iomgr/ev_posix.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 const grpc_event_engine_vtable *grpc_init_poll_posix(bool explicit_request);
 const grpc_event_engine_vtable *grpc_init_poll_cv_posix(bool explicit_request);
 
-#endif /* GRPC_CORE_LIB_IOMGR_EV_POLL_POSIX_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_EV_POLL_POSIX_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/ev_posix.c b/src/core/lib/iomgr/ev_posix.cc
similarity index 100%
rename from src/core/lib/iomgr/ev_posix.c
rename to src/core/lib/iomgr/ev_posix.cc
diff --git a/src/core/lib/iomgr/ev_posix.h b/src/core/lib/iomgr/ev_posix.h
index 1ff2ff1..5ad1c13 100644
--- a/src/core/lib/iomgr/ev_posix.h
+++ b/src/core/lib/iomgr/ev_posix.h
@@ -27,6 +27,10 @@
 #include "src/core/lib/iomgr/pollset_set.h"
 #include "src/core/lib/iomgr/wakeup_fd_posix.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 extern grpc_tracer_flag grpc_polling_trace; /* Disabled by default */
 
 typedef struct grpc_fd grpc_fd;
@@ -158,4 +162,8 @@
 void grpc_set_event_engine_test_only(const grpc_event_engine_vtable *);
 const grpc_event_engine_vtable *grpc_get_event_engine_test_only();
 
-#endif /* GRPC_CORE_LIB_IOMGR_EV_POSIX_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_EV_POSIX_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/ev_windows.c b/src/core/lib/iomgr/ev_windows.cc
similarity index 100%
rename from src/core/lib/iomgr/ev_windows.c
rename to src/core/lib/iomgr/ev_windows.cc
diff --git a/src/core/lib/iomgr/exec_ctx.c b/src/core/lib/iomgr/exec_ctx.cc
similarity index 100%
rename from src/core/lib/iomgr/exec_ctx.c
rename to src/core/lib/iomgr/exec_ctx.cc
diff --git a/src/core/lib/iomgr/exec_ctx.h b/src/core/lib/iomgr/exec_ctx.h
index c89792c..a93728f 100644
--- a/src/core/lib/iomgr/exec_ctx.h
+++ b/src/core/lib/iomgr/exec_ctx.h
@@ -22,6 +22,10 @@
 #include <grpc/support/cpu.h>
 #include "src/core/lib/iomgr/closure.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* #define GRPC_EXECUTION_CONTEXT_SANITIZER 1 */
 
 /** A workqueue represents a list of work to be executed asynchronously.
@@ -106,4 +110,8 @@
 void grpc_exec_ctx_global_init(void);
 void grpc_exec_ctx_global_shutdown(void);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_IOMGR_EXEC_CTX_H */
diff --git a/src/core/lib/iomgr/executor.c b/src/core/lib/iomgr/executor.cc
similarity index 98%
rename from src/core/lib/iomgr/executor.c
rename to src/core/lib/iomgr/executor.cc
index 892385d..ebe7f24 100644
--- a/src/core/lib/iomgr/executor.c
+++ b/src/core/lib/iomgr/executor.cc
@@ -100,7 +100,7 @@
     for (size_t i = 0; i < g_max_threads; i++) {
       gpr_mu_init(&g_thread_state[i].mu);
       gpr_cv_init(&g_thread_state[i].cv);
-      g_thread_state[i].elems = (grpc_closure_list)GRPC_CLOSURE_LIST_INIT;
+      g_thread_state[i].elems = GRPC_CLOSURE_LIST_INIT;
     }
 
     gpr_thd_options opt = gpr_thd_options_default();
@@ -172,7 +172,7 @@
     }
     GRPC_STATS_INC_EXECUTOR_QUEUE_DRAINED(&exec_ctx);
     grpc_closure_list exec = ts->elems;
-    ts->elems = (grpc_closure_list)GRPC_CLOSURE_LIST_INIT;
+    ts->elems = GRPC_CLOSURE_LIST_INIT;
     gpr_mu_unlock(&ts->mu);
     if (GRPC_TRACER_ON(executor_trace)) {
       gpr_log(GPR_DEBUG, "EXECUTOR[%d]: execute", (int)(ts - g_thread_state));
diff --git a/src/core/lib/iomgr/executor.h b/src/core/lib/iomgr/executor.h
index 0412c02..ab3fc90 100644
--- a/src/core/lib/iomgr/executor.h
+++ b/src/core/lib/iomgr/executor.h
@@ -21,6 +21,10 @@
 
 #include "src/core/lib/iomgr/closure.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef enum {
   GRPC_EXECUTOR_SHORT,
   GRPC_EXECUTOR_LONG
@@ -45,4 +49,8 @@
    grpc_executor_shutdown */
 void grpc_executor_set_threading(grpc_exec_ctx *exec_ctx, bool enable);
 
-#endif /* GRPC_CORE_LIB_IOMGR_EXECUTOR_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_EXECUTOR_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/gethostname.h b/src/core/lib/iomgr/gethostname.h
index 9c6b9d8..f335fea 100644
--- a/src/core/lib/iomgr/gethostname.h
+++ b/src/core/lib/iomgr/gethostname.h
@@ -19,8 +19,16 @@
 #ifndef GRPC_CORE_LIB_IOMGR_GETHOSTNAME_H
 #define GRPC_CORE_LIB_IOMGR_GETHOSTNAME_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 // Returns the hostname of the local machine.
 // Caller takes ownership of result.
 char *grpc_gethostname();
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_IOMGR_GETHOSTNAME_H */
diff --git a/src/core/lib/iomgr/gethostname_fallback.c b/src/core/lib/iomgr/gethostname_fallback.cc
similarity index 94%
rename from src/core/lib/iomgr/gethostname_fallback.c
rename to src/core/lib/iomgr/gethostname_fallback.cc
index 6229461..e6f4c2f 100644
--- a/src/core/lib/iomgr/gethostname_fallback.c
+++ b/src/core/lib/iomgr/gethostname_fallback.cc
@@ -16,6 +16,7 @@
  *
  */
 
+#include "src/core/lib/iomgr/gethostname.h"
 #include "src/core/lib/iomgr/port.h"
 
 #ifdef GRPC_GETHOSTNAME_FALLBACK
diff --git a/src/core/lib/iomgr/gethostname_host_name_max.c b/src/core/lib/iomgr/gethostname_host_name_max.cc
similarity index 95%
rename from src/core/lib/iomgr/gethostname_host_name_max.c
rename to src/core/lib/iomgr/gethostname_host_name_max.cc
index 4d05114..cdaf097 100644
--- a/src/core/lib/iomgr/gethostname_host_name_max.c
+++ b/src/core/lib/iomgr/gethostname_host_name_max.cc
@@ -16,6 +16,7 @@
  *
  */
 
+#include "src/core/lib/iomgr/gethostname.h"
 #include "src/core/lib/iomgr/port.h"
 
 #ifdef GRPC_POSIX_HOST_NAME_MAX
diff --git a/src/core/lib/iomgr/gethostname_sysconf.c b/src/core/lib/iomgr/gethostname_sysconf.cc
similarity index 95%
rename from src/core/lib/iomgr/gethostname_sysconf.c
rename to src/core/lib/iomgr/gethostname_sysconf.cc
index 51bac5d..8441e06 100644
--- a/src/core/lib/iomgr/gethostname_sysconf.c
+++ b/src/core/lib/iomgr/gethostname_sysconf.cc
@@ -16,6 +16,7 @@
  *
  */
 
+#include "src/core/lib/iomgr/gethostname.h"
 #include "src/core/lib/iomgr/port.h"
 
 #ifdef GRPC_POSIX_SYSCONF
diff --git a/src/core/lib/iomgr/iocp_windows.c b/src/core/lib/iomgr/iocp_windows.cc
similarity index 100%
rename from src/core/lib/iomgr/iocp_windows.c
rename to src/core/lib/iomgr/iocp_windows.cc
diff --git a/src/core/lib/iomgr/iocp_windows.h b/src/core/lib/iomgr/iocp_windows.h
index 9c89e86..341c159 100644
--- a/src/core/lib/iomgr/iocp_windows.h
+++ b/src/core/lib/iomgr/iocp_windows.h
@@ -23,6 +23,10 @@
 
 #include "src/core/lib/iomgr/socket_windows.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef enum {
   GRPC_IOCP_WORK_WORK,
   GRPC_IOCP_WORK_TIMEOUT,
@@ -37,4 +41,8 @@
 void grpc_iocp_shutdown(void);
 void grpc_iocp_add_socket(grpc_winsocket *);
 
-#endif /* GRPC_CORE_LIB_IOMGR_IOCP_WINDOWS_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_IOCP_WINDOWS_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/iomgr.c b/src/core/lib/iomgr/iomgr.cc
similarity index 98%
rename from src/core/lib/iomgr/iomgr.c
rename to src/core/lib/iomgr/iomgr.cc
index f63f190..3a06058 100644
--- a/src/core/lib/iomgr/iomgr.c
+++ b/src/core/lib/iomgr/iomgr.cc
@@ -16,8 +16,11 @@
  *
  */
 
+#include <grpc/support/port_platform.h>
+
 #include "src/core/lib/iomgr/iomgr.h"
 
+#include <inttypes.h>
 #include <stdlib.h>
 #include <string.h>
 
diff --git a/src/core/lib/iomgr/iomgr.h b/src/core/lib/iomgr/iomgr.h
index e3cd6eb..fea0849 100644
--- a/src/core/lib/iomgr/iomgr.h
+++ b/src/core/lib/iomgr/iomgr.h
@@ -22,6 +22,10 @@
 #include <grpc/impl/codegen/exec_ctx_fwd.h>
 #include "src/core/lib/iomgr/port.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /** Initializes the iomgr. */
 void grpc_iomgr_init(grpc_exec_ctx *exec_ctx);
 
@@ -32,4 +36,8 @@
  * exec_ctx. */
 void grpc_iomgr_shutdown(grpc_exec_ctx *exec_ctx);
 
-#endif /* GRPC_CORE_LIB_IOMGR_IOMGR_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_IOMGR_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/iomgr_internal.h b/src/core/lib/iomgr/iomgr_internal.h
index 836d825..005abbe 100644
--- a/src/core/lib/iomgr/iomgr_internal.h
+++ b/src/core/lib/iomgr/iomgr_internal.h
@@ -23,6 +23,10 @@
 
 #include "src/core/lib/iomgr/iomgr.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct grpc_iomgr_object {
   char *name;
   struct grpc_iomgr_object *next;
@@ -40,4 +44,8 @@
 
 bool grpc_iomgr_abort_on_leaks(void);
 
-#endif /* GRPC_CORE_LIB_IOMGR_IOMGR_INTERNAL_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_IOMGR_INTERNAL_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/iomgr_posix.c b/src/core/lib/iomgr/iomgr_posix.cc
similarity index 100%
rename from src/core/lib/iomgr/iomgr_posix.c
rename to src/core/lib/iomgr/iomgr_posix.cc
diff --git a/src/core/lib/iomgr/iomgr_uv.c b/src/core/lib/iomgr/iomgr_uv.cc
similarity index 100%
rename from src/core/lib/iomgr/iomgr_uv.c
rename to src/core/lib/iomgr/iomgr_uv.cc
diff --git a/src/core/lib/iomgr/iomgr_uv.h b/src/core/lib/iomgr/iomgr_uv.h
index 3b4daaa..bc42ca8 100644
--- a/src/core/lib/iomgr/iomgr_uv.h
+++ b/src/core/lib/iomgr/iomgr_uv.h
@@ -23,10 +23,18 @@
 
 #include <grpc/support/thd.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* The thread ID of the thread on which grpc was initialized. Used to verify
  * that all calls into libuv are made on that same thread */
 extern gpr_thd_id g_init_thread;
 
+#ifdef __cplusplus
+}
+#endif
+
 #ifdef GRPC_UV_THREAD_CHECK
 #define GRPC_UV_ASSERT_SAME_THREAD() \
   GPR_ASSERT(gpr_thd_currentid() == g_init_thread)
diff --git a/src/core/lib/iomgr/iomgr_windows.c b/src/core/lib/iomgr/iomgr_windows.cc
similarity index 100%
rename from src/core/lib/iomgr/iomgr_windows.c
rename to src/core/lib/iomgr/iomgr_windows.cc
diff --git a/src/core/lib/iomgr/is_epollexclusive_available.c b/src/core/lib/iomgr/is_epollexclusive_available.cc
similarity index 100%
rename from src/core/lib/iomgr/is_epollexclusive_available.c
rename to src/core/lib/iomgr/is_epollexclusive_available.cc
diff --git a/src/core/lib/iomgr/is_epollexclusive_available.h b/src/core/lib/iomgr/is_epollexclusive_available.h
index 1d2e133..5c3e483 100644
--- a/src/core/lib/iomgr/is_epollexclusive_available.h
+++ b/src/core/lib/iomgr/is_epollexclusive_available.h
@@ -21,6 +21,14 @@
 
 #include <stdbool.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 bool grpc_is_epollexclusive_available(void);
 
-#endif /* GRPC_CORE_LIB_IOMGR_IS_EPOLLEXCLUSIVE_AVAILABLE_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_IS_EPOLLEXCLUSIVE_AVAILABLE_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/load_file.c b/src/core/lib/iomgr/load_file.cc
similarity index 100%
rename from src/core/lib/iomgr/load_file.c
rename to src/core/lib/iomgr/load_file.cc
diff --git a/src/core/lib/iomgr/lockfree_event.c b/src/core/lib/iomgr/lockfree_event.cc
similarity index 100%
rename from src/core/lib/iomgr/lockfree_event.c
rename to src/core/lib/iomgr/lockfree_event.cc
diff --git a/src/core/lib/iomgr/lockfree_event.h b/src/core/lib/iomgr/lockfree_event.h
index 6a14a0f..925f004 100644
--- a/src/core/lib/iomgr/lockfree_event.h
+++ b/src/core/lib/iomgr/lockfree_event.h
@@ -25,6 +25,10 @@
 
 #include "src/core/lib/iomgr/exec_ctx.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 void grpc_lfev_init(gpr_atm *state);
 void grpc_lfev_destroy(gpr_atm *state);
 bool grpc_lfev_is_shutdown(gpr_atm *state);
@@ -37,4 +41,8 @@
 void grpc_lfev_set_ready(grpc_exec_ctx *exec_ctx, gpr_atm *state,
                          const char *variable);
 
-#endif /* GRPC_CORE_LIB_IOMGR_LOCKFREE_EVENT_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_LOCKFREE_EVENT_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/network_status_tracker.c b/src/core/lib/iomgr/network_status_tracker.cc
similarity index 94%
rename from src/core/lib/iomgr/network_status_tracker.c
rename to src/core/lib/iomgr/network_status_tracker.cc
index 4e5c1d5..57a7faa 100644
--- a/src/core/lib/iomgr/network_status_tracker.c
+++ b/src/core/lib/iomgr/network_status_tracker.cc
@@ -16,6 +16,7 @@
  *
  */
 
+#include "src/core/lib/iomgr/network_status_tracker.h"
 #include "src/core/lib/iomgr/endpoint.h"
 
 void grpc_network_status_shutdown(void) {}
diff --git a/src/core/lib/iomgr/network_status_tracker.h b/src/core/lib/iomgr/network_status_tracker.h
index c0295c1..af50d51 100644
--- a/src/core/lib/iomgr/network_status_tracker.h
+++ b/src/core/lib/iomgr/network_status_tracker.h
@@ -20,6 +20,10 @@
 #define GRPC_CORE_LIB_IOMGR_NETWORK_STATUS_TRACKER_H
 #include "src/core/lib/iomgr/endpoint.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 void grpc_network_status_init(void);
 void grpc_network_status_shutdown(void);
 
@@ -27,4 +31,8 @@
 void grpc_network_status_unregister_endpoint(grpc_endpoint *ep);
 void grpc_network_status_shutdown_all_endpoints();
 
-#endif /* GRPC_CORE_LIB_IOMGR_NETWORK_STATUS_TRACKER_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_NETWORK_STATUS_TRACKER_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/polling_entity.c b/src/core/lib/iomgr/polling_entity.cc
similarity index 100%
rename from src/core/lib/iomgr/polling_entity.c
rename to src/core/lib/iomgr/polling_entity.cc
diff --git a/src/core/lib/iomgr/polling_entity.h b/src/core/lib/iomgr/polling_entity.h
index a161e1f..4a37acf 100644
--- a/src/core/lib/iomgr/polling_entity.h
+++ b/src/core/lib/iomgr/polling_entity.h
@@ -22,6 +22,10 @@
 #include "src/core/lib/iomgr/pollset.h"
 #include "src/core/lib/iomgr/pollset_set.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef enum grpc_pollset_tag {
   GRPC_POLLS_NONE,
   GRPC_POLLS_POLLSET,
@@ -64,4 +68,8 @@
 void grpc_polling_entity_del_from_pollset_set(grpc_exec_ctx *exec_ctx,
                                               grpc_polling_entity *pollent,
                                               grpc_pollset_set *pss_dst);
-#endif /* GRPC_CORE_LIB_IOMGR_POLLING_ENTITY_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_POLLING_ENTITY_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/pollset.h b/src/core/lib/iomgr/pollset.h
index a0f6b3a..28d6394 100644
--- a/src/core/lib/iomgr/pollset.h
+++ b/src/core/lib/iomgr/pollset.h
@@ -25,6 +25,10 @@
 
 #include "src/core/lib/iomgr/exec_ctx.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #ifndef NDEBUG
 extern grpc_tracer_flag grpc_trace_fd_refcount;
 #endif
@@ -80,4 +84,8 @@
                               grpc_pollset_worker *specific_worker)
     GRPC_MUST_USE_RESULT;
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_IOMGR_POLLSET_H */
diff --git a/src/core/lib/iomgr/pollset_set.h b/src/core/lib/iomgr/pollset_set.h
index 29c0f03..17df865 100644
--- a/src/core/lib/iomgr/pollset_set.h
+++ b/src/core/lib/iomgr/pollset_set.h
@@ -21,6 +21,10 @@
 
 #include "src/core/lib/iomgr/pollset.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* A grpc_pollset_set is a set of pollsets that are interested in an
    action. Adding a pollset to a pollset_set automatically adds any
    fd's (etc) that have been registered with the set_set to that pollset.
@@ -44,4 +48,8 @@
                                       grpc_pollset_set *bag,
                                       grpc_pollset_set *item);
 
-#endif /* GRPC_CORE_LIB_IOMGR_POLLSET_SET_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_POLLSET_SET_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/pollset_set_uv.c b/src/core/lib/iomgr/pollset_set_uv.cc
similarity index 100%
rename from src/core/lib/iomgr/pollset_set_uv.c
rename to src/core/lib/iomgr/pollset_set_uv.cc
diff --git a/src/core/lib/iomgr/pollset_set_windows.c b/src/core/lib/iomgr/pollset_set_windows.cc
similarity index 100%
rename from src/core/lib/iomgr/pollset_set_windows.c
rename to src/core/lib/iomgr/pollset_set_windows.cc
diff --git a/src/core/lib/iomgr/pollset_uv.c b/src/core/lib/iomgr/pollset_uv.cc
similarity index 98%
rename from src/core/lib/iomgr/pollset_uv.c
rename to src/core/lib/iomgr/pollset_uv.cc
index 2651325..7ea5019 100644
--- a/src/core/lib/iomgr/pollset_uv.c
+++ b/src/core/lib/iomgr/pollset_uv.cc
@@ -65,7 +65,7 @@
 
 void grpc_pollset_global_init(void) {
   gpr_mu_init(&grpc_polling_mu);
-  dummy_uv_handle = gpr_malloc(sizeof(uv_timer_t));
+  dummy_uv_handle = (uv_timer_t *)gpr_malloc(sizeof(uv_timer_t));
   uv_timer_init(uv_default_loop(), dummy_uv_handle);
   grpc_pollset_work_run_loop = 1;
 }
diff --git a/src/core/lib/iomgr/pollset_uv.h b/src/core/lib/iomgr/pollset_uv.h
index 566c110..d8f72ff 100644
--- a/src/core/lib/iomgr/pollset_uv.h
+++ b/src/core/lib/iomgr/pollset_uv.h
@@ -19,9 +19,17 @@
 #ifndef GRPC_CORE_LIB_IOMGR_POLLSET_UV_H
 #define GRPC_CORE_LIB_IOMGR_POLLSET_UV_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 extern int grpc_pollset_work_run_loop;
 
 void grpc_pollset_global_init(void);
 void grpc_pollset_global_shutdown(void);
 
-#endif /* GRPC_CORE_LIB_IOMGR_POLLSET_UV_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_POLLSET_UV_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/pollset_windows.c b/src/core/lib/iomgr/pollset_windows.cc
similarity index 100%
rename from src/core/lib/iomgr/pollset_windows.c
rename to src/core/lib/iomgr/pollset_windows.cc
diff --git a/src/core/lib/iomgr/pollset_windows.h b/src/core/lib/iomgr/pollset_windows.h
index 71878c3..7733d26 100644
--- a/src/core/lib/iomgr/pollset_windows.h
+++ b/src/core/lib/iomgr/pollset_windows.h
@@ -23,6 +23,10 @@
 
 #include "src/core/lib/iomgr/socket_windows.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* There isn't really any such thing as a pollset under Windows, due to the
    nature of the IO completion ports. A Windows "pollset" is merely a mutex
    used to synchronize with the IOCP, and workers are condition variables
@@ -60,4 +64,8 @@
 void grpc_pollset_global_init(void);
 void grpc_pollset_global_shutdown(void);
 
-#endif /* GRPC_CORE_LIB_IOMGR_POLLSET_WINDOWS_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_POLLSET_WINDOWS_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/resolve_address.h b/src/core/lib/iomgr/resolve_address.h
index fe1dd78..4a6df2c 100644
--- a/src/core/lib/iomgr/resolve_address.h
+++ b/src/core/lib/iomgr/resolve_address.h
@@ -25,6 +25,10 @@
 
 #define GRPC_MAX_SOCKADDR_SIZE 128
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct {
   char addr[GRPC_MAX_SOCKADDR_SIZE];
   size_t len;
@@ -52,4 +56,8 @@
     const char *name, const char *default_port,
     grpc_resolved_addresses **addresses);
 
-#endif /* GRPC_CORE_LIB_IOMGR_RESOLVE_ADDRESS_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_RESOLVE_ADDRESS_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/resolve_address_posix.c b/src/core/lib/iomgr/resolve_address_posix.cc
similarity index 100%
rename from src/core/lib/iomgr/resolve_address_posix.c
rename to src/core/lib/iomgr/resolve_address_posix.cc
diff --git a/src/core/lib/iomgr/resolve_address_uv.c b/src/core/lib/iomgr/resolve_address_uv.cc
similarity index 92%
rename from src/core/lib/iomgr/resolve_address_uv.c
rename to src/core/lib/iomgr/resolve_address_uv.cc
index 2d438e8..4f7f234 100644
--- a/src/core/lib/iomgr/resolve_address_uv.c
+++ b/src/core/lib/iomgr/resolve_address_uv.cc
@@ -49,11 +49,12 @@
                                     uv_getaddrinfo_cb getaddrinfo_cb) {
   if (status != 0) {
     // This loop is copied from resolve_address_posix.c
-    char *svc[][2] = {{"http", "80"}, {"https", "443"}};
+    const char *svc[][2] = {{"http", "80"}, {"https", "443"}};
     for (size_t i = 0; i < GPR_ARRAY_SIZE(svc); i++) {
       if (strcmp(r->port, svc[i][0]) == 0) {
         int retry_status;
-        uv_getaddrinfo_t *req = gpr_malloc(sizeof(uv_getaddrinfo_t));
+        uv_getaddrinfo_t *req =
+            (uv_getaddrinfo_t *)gpr_malloc(sizeof(uv_getaddrinfo_t));
         req->data = r;
         r->port = gpr_strdup(svc[i][1]);
         retry_status = uv_getaddrinfo(uv_default_loop(), req, getaddrinfo_cb,
@@ -85,13 +86,14 @@
                            grpc_slice_from_static_string(uv_strerror(status)));
     return error;
   }
-  (*addresses) = gpr_malloc(sizeof(grpc_resolved_addresses));
+  (*addresses) =
+      (grpc_resolved_addresses *)gpr_malloc(sizeof(grpc_resolved_addresses));
   (*addresses)->naddrs = 0;
   for (resp = result; resp != NULL; resp = resp->ai_next) {
     (*addresses)->naddrs++;
   }
-  (*addresses)->addrs =
-      gpr_malloc(sizeof(grpc_resolved_address) * (*addresses)->naddrs);
+  (*addresses)->addrs = (grpc_resolved_address *)gpr_malloc(
+      sizeof(grpc_resolved_address) * (*addresses)->naddrs);
   i = 0;
   for (resp = result; resp != NULL; resp = resp->ai_next) {
     memcpy(&(*addresses)->addrs[i].addr, resp->ai_addr, resp->ai_addrlen);
@@ -174,6 +176,7 @@
   int s;
   grpc_error *err;
   int retry_status;
+  request r;
 
   GRPC_UV_ASSERT_SAME_THREAD();
 
@@ -191,8 +194,10 @@
   hints.ai_flags = AI_PASSIVE;     /* for wildcard IP address */
 
   s = uv_getaddrinfo(uv_default_loop(), &req, NULL, host, port, &hints);
-  request r = {
-      .addresses = addresses, .hints = &hints, .host = host, .port = port};
+  r.addresses = addresses;
+  r.hints = &hints;
+  r.host = host;
+  r.port = port;
   retry_status = retry_named_port_failure(s, &r, NULL);
   if (retry_status <= 0) {
     s = retry_status;
@@ -239,16 +244,16 @@
     gpr_free(port);
     return;
   }
-  r = gpr_malloc(sizeof(request));
+  r = (request *)gpr_malloc(sizeof(request));
   r->on_done = on_done;
   r->addresses = addrs;
   r->host = host;
   r->port = port;
-  req = gpr_malloc(sizeof(uv_getaddrinfo_t));
+  req = (uv_getaddrinfo_t *)gpr_malloc(sizeof(uv_getaddrinfo_t));
   req->data = r;
 
   /* Call getaddrinfo */
-  hints = gpr_malloc(sizeof(struct addrinfo));
+  hints = (addrinfo *)gpr_malloc(sizeof(struct addrinfo));
   memset(hints, 0, sizeof(struct addrinfo));
   hints->ai_family = AF_UNSPEC;     /* ipv4 or ipv6 */
   hints->ai_socktype = SOCK_STREAM; /* stream socket */
diff --git a/src/core/lib/iomgr/resolve_address_windows.c b/src/core/lib/iomgr/resolve_address_windows.cc
similarity index 93%
rename from src/core/lib/iomgr/resolve_address_windows.c
rename to src/core/lib/iomgr/resolve_address_windows.cc
index 0cb0029..abcfc21 100644
--- a/src/core/lib/iomgr/resolve_address_windows.c
+++ b/src/core/lib/iomgr/resolve_address_windows.cc
@@ -23,6 +23,7 @@
 
 #include "src/core/lib/iomgr/resolve_address.h"
 
+#include <inttypes.h>
 #include <string.h>
 #include <sys/types.h>
 
@@ -93,13 +94,14 @@
   }
 
   /* Success path: set addrs non-NULL, fill it in */
-  (*addresses) = gpr_malloc(sizeof(grpc_resolved_addresses));
+  (*addresses) =
+      (grpc_resolved_addresses *)gpr_malloc(sizeof(grpc_resolved_addresses));
   (*addresses)->naddrs = 0;
   for (resp = result; resp != NULL; resp = resp->ai_next) {
     (*addresses)->naddrs++;
   }
-  (*addresses)->addrs =
-      gpr_malloc(sizeof(grpc_resolved_address) * (*addresses)->naddrs);
+  (*addresses)->addrs = (grpc_resolved_address *)gpr_malloc(
+      sizeof(grpc_resolved_address) * (*addresses)->naddrs);
   i = 0;
   for (resp = result; resp != NULL; resp = resp->ai_next) {
     memcpy(&(*addresses)->addrs[i].addr, resp->ai_addr, resp->ai_addrlen);
@@ -132,7 +134,7 @@
  * grpc_blocking_resolve_address */
 static void do_request_thread(grpc_exec_ctx *exec_ctx, void *rp,
                               grpc_error *error) {
-  request *r = rp;
+  request *r = (request *)rp;
   if (error == GRPC_ERROR_NONE) {
     error =
         grpc_blocking_resolve_address(r->name, r->default_port, r->addresses);
@@ -157,7 +159,7 @@
                                  grpc_pollset_set *interested_parties,
                                  grpc_closure *on_done,
                                  grpc_resolved_addresses **addresses) {
-  request *r = gpr_malloc(sizeof(request));
+  request *r = (request *)gpr_malloc(sizeof(request));
   GRPC_CLOSURE_INIT(&r->request_closure, do_request_thread, r,
                     grpc_executor_scheduler(GRPC_EXECUTOR_SHORT));
   r->name = gpr_strdup(name);
diff --git a/src/core/lib/iomgr/resource_quota.c b/src/core/lib/iomgr/resource_quota.cc
similarity index 99%
rename from src/core/lib/iomgr/resource_quota.c
rename to src/core/lib/iomgr/resource_quota.cc
index 4d69986..6026243 100644
--- a/src/core/lib/iomgr/resource_quota.c
+++ b/src/core/lib/iomgr/resource_quota.cc
@@ -18,6 +18,7 @@
 
 #include "src/core/lib/iomgr/resource_quota.h"
 
+#include <inttypes.h>
 #include <limits.h>
 #include <stdint.h>
 #include <string.h>
diff --git a/src/core/lib/iomgr/resource_quota.h b/src/core/lib/iomgr/resource_quota.h
index d66f9ae..3afb525 100644
--- a/src/core/lib/iomgr/resource_quota.h
+++ b/src/core/lib/iomgr/resource_quota.h
@@ -24,6 +24,10 @@
 #include "src/core/lib/debug/trace.h"
 #include "src/core/lib/iomgr/exec_ctx.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /** \file Tracks resource usage against a pool.
 
     The current implementation tracks only memory usage, but in the future
@@ -150,4 +154,8 @@
                                            grpc_resource_user *resource_user,
                                            size_t size);
 
-#endif /* GRPC_CORE_LIB_IOMGR_RESOURCE_QUOTA_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_RESOURCE_QUOTA_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/sockaddr_utils.c b/src/core/lib/iomgr/sockaddr_utils.cc
similarity index 99%
rename from src/core/lib/iomgr/sockaddr_utils.c
rename to src/core/lib/iomgr/sockaddr_utils.cc
index 3f4145d..8a2e6ed 100644
--- a/src/core/lib/iomgr/sockaddr_utils.c
+++ b/src/core/lib/iomgr/sockaddr_utils.cc
@@ -19,6 +19,7 @@
 #include "src/core/lib/iomgr/sockaddr_utils.h"
 
 #include <errno.h>
+#include <inttypes.h>
 #include <string.h>
 
 #include <grpc/support/alloc.h>
diff --git a/src/core/lib/iomgr/sockaddr_utils.h b/src/core/lib/iomgr/sockaddr_utils.h
index a589a19..129bb54 100644
--- a/src/core/lib/iomgr/sockaddr_utils.h
+++ b/src/core/lib/iomgr/sockaddr_utils.h
@@ -21,6 +21,10 @@
 
 #include "src/core/lib/iomgr/resolve_address.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Returns true if addr is an IPv4-mapped IPv6 address within the
    ::ffff:0.0.0.0/96 range, or false otherwise.
 
@@ -77,4 +81,8 @@
 
 int grpc_sockaddr_get_family(const grpc_resolved_address *resolved_addr);
 
-#endif /* GRPC_CORE_LIB_IOMGR_SOCKADDR_UTILS_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_SOCKADDR_UTILS_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/socket_factory_posix.c b/src/core/lib/iomgr/socket_factory_posix.cc
similarity index 100%
rename from src/core/lib/iomgr/socket_factory_posix.c
rename to src/core/lib/iomgr/socket_factory_posix.cc
diff --git a/src/core/lib/iomgr/socket_mutator.c b/src/core/lib/iomgr/socket_mutator.cc
similarity index 100%
rename from src/core/lib/iomgr/socket_mutator.c
rename to src/core/lib/iomgr/socket_mutator.cc
diff --git a/src/core/lib/iomgr/socket_utils.h b/src/core/lib/iomgr/socket_utils.h
index 03fe46e..f319e93 100644
--- a/src/core/lib/iomgr/socket_utils.h
+++ b/src/core/lib/iomgr/socket_utils.h
@@ -21,7 +21,15 @@
 
 #include <stddef.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* A wrapper for inet_ntop on POSIX systems and InetNtop on Windows systems */
 const char *grpc_inet_ntop(int af, const void *src, char *dst, size_t size);
 
-#endif /* GRPC_CORE_LIB_IOMGR_SOCKET_UTILS_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_SOCKET_UTILS_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/socket_utils_common_posix.c b/src/core/lib/iomgr/socket_utils_common_posix.cc
similarity index 100%
rename from src/core/lib/iomgr/socket_utils_common_posix.c
rename to src/core/lib/iomgr/socket_utils_common_posix.cc
diff --git a/src/core/lib/iomgr/socket_utils_linux.c b/src/core/lib/iomgr/socket_utils_linux.cc
similarity index 100%
rename from src/core/lib/iomgr/socket_utils_linux.c
rename to src/core/lib/iomgr/socket_utils_linux.cc
diff --git a/src/core/lib/iomgr/socket_utils_posix.c b/src/core/lib/iomgr/socket_utils_posix.cc
similarity index 100%
rename from src/core/lib/iomgr/socket_utils_posix.c
rename to src/core/lib/iomgr/socket_utils_posix.cc
diff --git a/src/core/lib/iomgr/socket_utils_posix.h b/src/core/lib/iomgr/socket_utils_posix.h
index eef80b4..623b83f 100644
--- a/src/core/lib/iomgr/socket_utils_posix.h
+++ b/src/core/lib/iomgr/socket_utils_posix.h
@@ -29,6 +29,10 @@
 #include "src/core/lib/iomgr/socket_factory_posix.h"
 #include "src/core/lib/iomgr/socket_mutator.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* a wrapper for accept or accept4 */
 int grpc_accept4(int sockfd, grpc_resolved_address *resolved_addr, int nonblock,
                  int cloexec);
@@ -129,4 +133,8 @@
     grpc_socket_factory *factory, const grpc_resolved_address *addr, int type,
     int protocol, grpc_dualstack_mode *dsmode, int *newfd);
 
-#endif /* GRPC_CORE_LIB_IOMGR_SOCKET_UTILS_POSIX_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_SOCKET_UTILS_POSIX_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/socket_utils_uv.c b/src/core/lib/iomgr/socket_utils_uv.cc
similarity index 100%
rename from src/core/lib/iomgr/socket_utils_uv.c
rename to src/core/lib/iomgr/socket_utils_uv.cc
diff --git a/src/core/lib/iomgr/socket_utils_windows.c b/src/core/lib/iomgr/socket_utils_windows.cc
similarity index 100%
rename from src/core/lib/iomgr/socket_utils_windows.c
rename to src/core/lib/iomgr/socket_utils_windows.cc
diff --git a/src/core/lib/iomgr/socket_windows.c b/src/core/lib/iomgr/socket_windows.cc
similarity index 98%
rename from src/core/lib/iomgr/socket_windows.c
rename to src/core/lib/iomgr/socket_windows.cc
index a0d731b..8c7f7cf 100644
--- a/src/core/lib/iomgr/socket_windows.c
+++ b/src/core/lib/iomgr/socket_windows.cc
@@ -38,7 +38,7 @@
 
 grpc_winsocket *grpc_winsocket_create(SOCKET socket, const char *name) {
   char *final_name;
-  grpc_winsocket *r = gpr_malloc(sizeof(grpc_winsocket));
+  grpc_winsocket *r = (grpc_winsocket *)gpr_malloc(sizeof(grpc_winsocket));
   memset(r, 0, sizeof(grpc_winsocket));
   r->socket = socket;
   gpr_mu_init(&r->state_mu);
diff --git a/src/core/lib/iomgr/socket_windows.h b/src/core/lib/iomgr/socket_windows.h
index 67dc4ca..a00a761 100644
--- a/src/core/lib/iomgr/socket_windows.h
+++ b/src/core/lib/iomgr/socket_windows.h
@@ -28,6 +28,10 @@
 #include "src/core/lib/iomgr/exec_ctx.h"
 #include "src/core/lib/iomgr/iomgr_internal.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* This holds the data for an outstanding read or write on a socket.
    The mutex to protect the concurrent access to that data is the one
    inside the winsocket wrapper. */
@@ -107,4 +111,8 @@
                               grpc_winsocket *winsocket,
                               grpc_winsocket_callback_info *ci);
 
-#endif /* GRPC_CORE_LIB_IOMGR_SOCKET_WINDOWS_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_SOCKET_WINDOWS_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/tcp_client.h b/src/core/lib/iomgr/tcp_client.h
index 6c9e51a..18cf611 100644
--- a/src/core/lib/iomgr/tcp_client.h
+++ b/src/core/lib/iomgr/tcp_client.h
@@ -25,6 +25,10 @@
 #include "src/core/lib/iomgr/pollset_set.h"
 #include "src/core/lib/iomgr/resolve_address.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Asynchronously connect to an address (specified as (addr, len)), and call
    cb with arg and the completed connection when done (or call cb with arg and
    NULL on failure).
@@ -37,4 +41,8 @@
                              const grpc_resolved_address *addr,
                              gpr_timespec deadline);
 
-#endif /* GRPC_CORE_LIB_IOMGR_TCP_CLIENT_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_TCP_CLIENT_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/tcp_client_posix.c b/src/core/lib/iomgr/tcp_client_posix.cc
similarity index 99%
rename from src/core/lib/iomgr/tcp_client_posix.c
rename to src/core/lib/iomgr/tcp_client_posix.cc
index 39dbb50..7d9e953 100644
--- a/src/core/lib/iomgr/tcp_client_posix.c
+++ b/src/core/lib/iomgr/tcp_client_posix.cc
@@ -337,11 +337,13 @@
 }
 
 // overridden by api_fuzzer.c
+extern "C" {
 void (*grpc_tcp_client_connect_impl)(
     grpc_exec_ctx *exec_ctx, grpc_closure *closure, grpc_endpoint **ep,
     grpc_pollset_set *interested_parties, const grpc_channel_args *channel_args,
     const grpc_resolved_address *addr,
     gpr_timespec deadline) = tcp_client_connect_impl;
+}
 
 void grpc_tcp_client_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
                              grpc_endpoint **ep,
diff --git a/src/core/lib/iomgr/tcp_client_posix.h b/src/core/lib/iomgr/tcp_client_posix.h
index b5a3814..0b97755 100644
--- a/src/core/lib/iomgr/tcp_client_posix.h
+++ b/src/core/lib/iomgr/tcp_client_posix.h
@@ -23,8 +23,16 @@
 #include "src/core/lib/iomgr/ev_posix.h"
 #include "src/core/lib/iomgr/tcp_client.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 grpc_endpoint *grpc_tcp_client_create_from_fd(
     grpc_exec_ctx *exec_ctx, grpc_fd *fd, const grpc_channel_args *channel_args,
     const char *addr_str);
 
-#endif /* GRPC_CORE_LIB_IOMGR_TCP_CLIENT_POSIX_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_TCP_CLIENT_POSIX_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/tcp_client_uv.c b/src/core/lib/iomgr/tcp_client_uv.cc
similarity index 93%
rename from src/core/lib/iomgr/tcp_client_uv.c
rename to src/core/lib/iomgr/tcp_client_uv.cc
index 786c456..8383597 100644
--- a/src/core/lib/iomgr/tcp_client_uv.c
+++ b/src/core/lib/iomgr/tcp_client_uv.cc
@@ -58,7 +58,7 @@
 static void uv_tc_on_alarm(grpc_exec_ctx *exec_ctx, void *acp,
                            grpc_error *error) {
   int done;
-  grpc_uv_tcp_connect *connect = acp;
+  grpc_uv_tcp_connect *connect = (grpc_uv_tcp_connect *)acp;
   if (GRPC_TRACER_ON(grpc_tcp_trace)) {
     const char *str = grpc_error_string(error);
     gpr_log(GPR_DEBUG, "CLIENT_CONNECT: %s: on_alarm: error=%s",
@@ -77,7 +77,7 @@
 }
 
 static void uv_tc_on_connect(uv_connect_t *req, int status) {
-  grpc_uv_tcp_connect *connect = req->data;
+  grpc_uv_tcp_connect *connect = (grpc_uv_tcp_connect *)req->data;
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
   grpc_error *error = GRPC_ERROR_NONE;
   int done;
@@ -132,20 +132,20 @@
       if (0 == strcmp(channel_args->args[i].key, GRPC_ARG_RESOURCE_QUOTA)) {
         grpc_resource_quota_unref_internal(exec_ctx, resource_quota);
         resource_quota = grpc_resource_quota_ref_internal(
-            channel_args->args[i].value.pointer.p);
+            (grpc_resource_quota *)channel_args->args[i].value.pointer.p);
       }
     }
   }
 
-  connect = gpr_zalloc(sizeof(grpc_uv_tcp_connect));
+  connect = (grpc_uv_tcp_connect *)gpr_zalloc(sizeof(grpc_uv_tcp_connect));
   connect->closure = closure;
   connect->endpoint = ep;
-  connect->tcp_handle = gpr_malloc(sizeof(uv_tcp_t));
+  connect->tcp_handle = (uv_tcp_t *)gpr_malloc(sizeof(uv_tcp_t));
   connect->addr_name = grpc_sockaddr_to_uri(resolved_addr);
   connect->resource_quota = resource_quota;
   uv_tcp_init(uv_default_loop(), connect->tcp_handle);
   connect->connect_req.data = connect;
-  connect->refs = 1;
+  connect->refs = 2;  // One for the connect operation, one for the timer.
 
   if (GRPC_TRACER_ON(grpc_tcp_trace)) {
     gpr_log(GPR_DEBUG, "CLIENT_CONNECT: %s: asynchronously connecting",
@@ -164,11 +164,13 @@
 }
 
 // overridden by api_fuzzer.c
+extern "C" {
 void (*grpc_tcp_client_connect_impl)(
     grpc_exec_ctx *exec_ctx, grpc_closure *closure, grpc_endpoint **ep,
     grpc_pollset_set *interested_parties, const grpc_channel_args *channel_args,
     const grpc_resolved_address *addr,
     gpr_timespec deadline) = tcp_client_connect_impl;
+}
 
 void grpc_tcp_client_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
                              grpc_endpoint **ep,
diff --git a/src/core/lib/iomgr/tcp_client_windows.c b/src/core/lib/iomgr/tcp_client_windows.cc
similarity index 97%
rename from src/core/lib/iomgr/tcp_client_windows.c
rename to src/core/lib/iomgr/tcp_client_windows.cc
index fc62105..1154965 100644
--- a/src/core/lib/iomgr/tcp_client_windows.c
+++ b/src/core/lib/iomgr/tcp_client_windows.cc
@@ -18,6 +18,8 @@
 
 #include "src/core/lib/iomgr/port.h"
 
+#include <inttypes.h>
+
 #ifdef GRPC_WINSOCK_SOCKET
 
 #include "src/core/lib/iomgr/sockaddr_windows.h"
@@ -66,7 +68,7 @@
 }
 
 static void on_alarm(grpc_exec_ctx *exec_ctx, void *acp, grpc_error *error) {
-  async_connect *ac = acp;
+  async_connect *ac = (async_connect *)acp;
   gpr_mu_lock(&ac->mu);
   grpc_winsocket *socket = ac->socket;
   ac->socket = NULL;
@@ -77,7 +79,7 @@
 }
 
 static void on_connect(grpc_exec_ctx *exec_ctx, void *acp, grpc_error *error) {
-  async_connect *ac = acp;
+  async_connect *ac = (async_connect *)acp;
   grpc_endpoint **ep = ac->endpoint;
   GPR_ASSERT(*ep == NULL);
   grpc_closure *on_done = ac->on_done;
@@ -193,7 +195,7 @@
     }
   }
 
-  ac = gpr_malloc(sizeof(async_connect));
+  ac = (async_connect *)gpr_malloc(sizeof(async_connect));
   ac->on_done = on_done;
   ac->socket = socket;
   gpr_mu_init(&ac->mu);
@@ -226,11 +228,13 @@
 }
 
 // overridden by api_fuzzer.c
+extern "C" {
 void (*grpc_tcp_client_connect_impl)(
     grpc_exec_ctx *exec_ctx, grpc_closure *closure, grpc_endpoint **ep,
     grpc_pollset_set *interested_parties, const grpc_channel_args *channel_args,
     const grpc_resolved_address *addr,
     gpr_timespec deadline) = tcp_client_connect_impl;
+}
 
 void grpc_tcp_client_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
                              grpc_endpoint **ep,
diff --git a/src/core/lib/iomgr/tcp_posix.c b/src/core/lib/iomgr/tcp_posix.cc
similarity index 100%
rename from src/core/lib/iomgr/tcp_posix.c
rename to src/core/lib/iomgr/tcp_posix.cc
diff --git a/src/core/lib/iomgr/tcp_posix.h b/src/core/lib/iomgr/tcp_posix.h
index 6831a4a..dda78b2 100644
--- a/src/core/lib/iomgr/tcp_posix.h
+++ b/src/core/lib/iomgr/tcp_posix.h
@@ -33,6 +33,10 @@
 #include "src/core/lib/iomgr/endpoint.h"
 #include "src/core/lib/iomgr/ev_posix.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 extern grpc_tracer_flag grpc_tcp_trace;
 
 /* Create a tcp endpoint given a file desciptor and a read slice size.
@@ -53,4 +57,8 @@
 void grpc_tcp_destroy_and_release_fd(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
                                      int *fd, grpc_closure *done);
 
-#endif /* GRPC_CORE_LIB_IOMGR_TCP_POSIX_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_TCP_POSIX_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/tcp_server.h b/src/core/lib/iomgr/tcp_server.h
index 8a126b6..3f190ac 100644
--- a/src/core/lib/iomgr/tcp_server.h
+++ b/src/core/lib/iomgr/tcp_server.h
@@ -25,6 +25,10 @@
 #include "src/core/lib/iomgr/endpoint.h"
 #include "src/core/lib/iomgr/resolve_address.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Forward decl of grpc_tcp_server */
 typedef struct grpc_tcp_server grpc_tcp_server;
 
@@ -98,4 +102,8 @@
 void grpc_tcp_server_shutdown_listeners(grpc_exec_ctx *exec_ctx,
                                         grpc_tcp_server *s);
 
-#endif /* GRPC_CORE_LIB_IOMGR_TCP_SERVER_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_TCP_SERVER_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/tcp_server_posix.c b/src/core/lib/iomgr/tcp_server_posix.cc
similarity index 100%
rename from src/core/lib/iomgr/tcp_server_posix.c
rename to src/core/lib/iomgr/tcp_server_posix.cc
diff --git a/src/core/lib/iomgr/tcp_server_utils_posix.h b/src/core/lib/iomgr/tcp_server_utils_posix.h
index 85dea51..4bb0660 100644
--- a/src/core/lib/iomgr/tcp_server_utils_posix.h
+++ b/src/core/lib/iomgr/tcp_server_utils_posix.h
@@ -24,6 +24,10 @@
 #include "src/core/lib/iomgr/socket_utils_posix.h"
 #include "src/core/lib/iomgr/tcp_server.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* one listening port */
 typedef struct grpc_tcp_listener {
   int fd;
@@ -117,4 +121,8 @@
 /* Ruturn true if the platform supports ifaddrs */
 bool grpc_tcp_server_have_ifaddrs(void);
 
-#endif /* GRPC_CORE_LIB_IOMGR_TCP_SERVER_UTILS_POSIX_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_TCP_SERVER_UTILS_POSIX_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/tcp_server_utils_posix_common.c b/src/core/lib/iomgr/tcp_server_utils_posix_common.cc
similarity index 100%
rename from src/core/lib/iomgr/tcp_server_utils_posix_common.c
rename to src/core/lib/iomgr/tcp_server_utils_posix_common.cc
diff --git a/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c b/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc
similarity index 100%
rename from src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c
rename to src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc
diff --git a/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c b/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc
similarity index 100%
rename from src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c
rename to src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc
diff --git a/src/core/lib/iomgr/tcp_server_uv.c b/src/core/lib/iomgr/tcp_server_uv.cc
similarity index 95%
rename from src/core/lib/iomgr/tcp_server_uv.c
rename to src/core/lib/iomgr/tcp_server_uv.cc
index 3b93323..348838c 100644
--- a/src/core/lib/iomgr/tcp_server_uv.c
+++ b/src/core/lib/iomgr/tcp_server_uv.cc
@@ -77,14 +77,14 @@
                                    grpc_closure *shutdown_complete,
                                    const grpc_channel_args *args,
                                    grpc_tcp_server **server) {
-  grpc_tcp_server *s = gpr_malloc(sizeof(grpc_tcp_server));
+  grpc_tcp_server *s = (grpc_tcp_server *)gpr_malloc(sizeof(grpc_tcp_server));
   s->resource_quota = grpc_resource_quota_create(NULL);
   for (size_t i = 0; i < (args == NULL ? 0 : args->num_args); i++) {
     if (0 == strcmp(GRPC_ARG_RESOURCE_QUOTA, args->args[i].key)) {
       if (args->args[i].type == GRPC_ARG_POINTER) {
         grpc_resource_quota_unref_internal(exec_ctx, s->resource_quota);
-        s->resource_quota =
-            grpc_resource_quota_ref_internal(args->args[i].value.pointer.p);
+        s->resource_quota = grpc_resource_quota_ref_internal(
+            (grpc_resource_quota *)args->args[i].value.pointer.p);
       } else {
         grpc_resource_quota_unref_internal(exec_ctx, s->resource_quota);
         gpr_free(s);
@@ -190,15 +190,16 @@
 }
 
 static void finish_accept(grpc_exec_ctx *exec_ctx, grpc_tcp_listener *sp) {
-  grpc_tcp_server_acceptor *acceptor = gpr_malloc(sizeof(*acceptor));
-  uv_tcp_t *client;
+  grpc_tcp_server_acceptor *acceptor =
+      (grpc_tcp_server_acceptor *)gpr_malloc(sizeof(*acceptor));
+  uv_tcp_t *client = NULL;
   grpc_endpoint *ep = NULL;
   grpc_resolved_address peer_name;
   char *peer_name_string;
   int err;
   uv_tcp_t *server = sp->handle;
 
-  client = gpr_malloc(sizeof(uv_tcp_t));
+  client = (uv_tcp_t *)gpr_malloc(sizeof(uv_tcp_t));
   uv_tcp_init(uv_default_loop(), client);
   // UV documentation says this is guaranteed to succeed
   uv_accept((uv_stream_t *)server, (uv_stream_t *)client);
@@ -303,7 +304,7 @@
 
   GPR_ASSERT(port >= 0);
   GPR_ASSERT(!s->on_accept_cb && "must add ports before starting server");
-  sp = gpr_zalloc(sizeof(grpc_tcp_listener));
+  sp = (grpc_tcp_listener *)gpr_zalloc(sizeof(grpc_tcp_listener));
   sp->next = NULL;
   if (s->head == NULL) {
     s->head = sp;
@@ -355,7 +356,8 @@
                                   (int *)&sockname_temp.len)) {
         *port = grpc_sockaddr_get_port(&sockname_temp);
         if (*port > 0) {
-          allocated_addr = gpr_malloc(sizeof(grpc_resolved_address));
+          allocated_addr = (grpc_resolved_address *)gpr_malloc(
+              sizeof(grpc_resolved_address));
           memcpy(allocated_addr, addr, sizeof(grpc_resolved_address));
           grpc_sockaddr_set_port(allocated_addr, *port);
           addr = allocated_addr;
@@ -376,7 +378,7 @@
     addr = &wildcard;
   }
 
-  handle = gpr_malloc(sizeof(uv_tcp_t));
+  handle = (uv_tcp_t *)gpr_malloc(sizeof(uv_tcp_t));
 
   family = grpc_sockaddr_get_family(addr);
   status = uv_tcp_init_ex(uv_default_loop(), handle, (unsigned int)family);
diff --git a/src/core/lib/iomgr/tcp_server_windows.c b/src/core/lib/iomgr/tcp_server_windows.cc
similarity index 96%
rename from src/core/lib/iomgr/tcp_server_windows.c
rename to src/core/lib/iomgr/tcp_server_windows.cc
index 0162afc..f198aaa 100644
--- a/src/core/lib/iomgr/tcp_server_windows.c
+++ b/src/core/lib/iomgr/tcp_server_windows.cc
@@ -22,6 +22,7 @@
 
 #include "src/core/lib/iomgr/sockaddr.h"
 
+#include <inttypes.h>
 #include <io.h>
 
 #include <grpc/support/alloc.h>
@@ -97,7 +98,7 @@
                                    grpc_closure *shutdown_complete,
                                    const grpc_channel_args *args,
                                    grpc_tcp_server **server) {
-  grpc_tcp_server *s = gpr_malloc(sizeof(grpc_tcp_server));
+  grpc_tcp_server *s = (grpc_tcp_server *)gpr_malloc(sizeof(grpc_tcp_server));
   s->channel_args = grpc_channel_args_copy(args);
   gpr_ref_init(&s->refs, 1);
   gpr_mu_init(&s->mu);
@@ -115,7 +116,7 @@
 
 static void destroy_server(grpc_exec_ctx *exec_ctx, void *arg,
                            grpc_error *error) {
-  grpc_tcp_server *s = arg;
+  grpc_tcp_server *s = (grpc_tcp_server *)arg;
 
   /* Now that the accepts have been aborted, we can destroy the sockets.
      The IOCP won't get notified on these, so we can flag them as already
@@ -188,6 +189,7 @@
                                   int *port) {
   grpc_resolved_address sockname_temp;
   grpc_error *error = GRPC_ERROR_NONE;
+  int sockname_temp_len;
 
   error = grpc_tcp_prepare_socket(sock);
   if (error != GRPC_ERROR_NONE) {
@@ -205,7 +207,7 @@
     goto failure;
   }
 
-  int sockname_temp_len = sizeof(struct sockaddr_storage);
+  sockname_temp_len = sizeof(struct sockaddr_storage);
   if (getsockname(sock, (struct sockaddr *)sockname_temp.addr,
                   &sockname_temp_len) == SOCKET_ERROR) {
     error = GRPC_WSA_ERROR(WSAGetLastError(), "getsockname");
@@ -294,7 +296,7 @@
 
 /* Event manager callback when reads are ready. */
 static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
-  grpc_tcp_listener *sp = arg;
+  grpc_tcp_listener *sp = (grpc_tcp_listener *)arg;
   SOCKET sock = sp->new_socket;
   grpc_winsocket_callback_info *info = &sp->socket->read_info;
   grpc_endpoint *ep = NULL;
@@ -368,7 +370,8 @@
      managed to accept a connection, and created an endpoint. */
   if (ep) {
     // Create acceptor.
-    grpc_tcp_server_acceptor *acceptor = gpr_malloc(sizeof(*acceptor));
+    grpc_tcp_server_acceptor *acceptor =
+        (grpc_tcp_server_acceptor *)gpr_malloc(sizeof(*acceptor));
     acceptor->from_server = sp->server;
     acceptor->port_index = sp->port_index;
     acceptor->fd_index = 0;
@@ -421,7 +424,7 @@
   GPR_ASSERT(port >= 0);
   gpr_mu_lock(&s->mu);
   GPR_ASSERT(!s->on_accept_cb && "must add ports before starting server");
-  sp = gpr_malloc(sizeof(grpc_tcp_listener));
+  sp = (grpc_tcp_listener *)gpr_malloc(sizeof(grpc_tcp_listener));
   sp->next = NULL;
   if (s->head == NULL) {
     s->head = sp;
@@ -472,7 +475,8 @@
         sockname_temp.len = (size_t)sockname_temp_len;
         *port = grpc_sockaddr_get_port(&sockname_temp);
         if (*port > 0) {
-          allocated_addr = gpr_malloc(sizeof(grpc_resolved_address));
+          allocated_addr = (grpc_resolved_address *)gpr_malloc(
+              sizeof(grpc_resolved_address));
           memcpy(allocated_addr, addr, sizeof(grpc_resolved_address));
           grpc_sockaddr_set_port(allocated_addr, *port);
           addr = allocated_addr;
diff --git a/src/core/lib/iomgr/tcp_uv.c b/src/core/lib/iomgr/tcp_uv.cc
similarity index 97%
rename from src/core/lib/iomgr/tcp_uv.c
rename to src/core/lib/iomgr/tcp_uv.cc
index a05c19b..e311964 100644
--- a/src/core/lib/iomgr/tcp_uv.c
+++ b/src/core/lib/iomgr/tcp_uv.cc
@@ -114,7 +114,7 @@
 
 static void uv_close_callback(uv_handle_t *handle) {
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  grpc_tcp *tcp = handle->data;
+  grpc_tcp *tcp = (grpc_tcp *)handle->data;
   TCP_UNREF(&exec_ctx, tcp, "destroy");
   grpc_exec_ctx_finish(&exec_ctx);
 }
@@ -128,7 +128,7 @@
 static void alloc_uv_buf(uv_handle_t *handle, size_t suggested_size,
                          uv_buf_t *buf) {
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  grpc_tcp *tcp = handle->data;
+  grpc_tcp *tcp = (grpc_tcp *)handle->data;
   (void)suggested_size;
   buf->base = (char *)GRPC_SLICE_START_PTR(tcp->read_slice);
   buf->len = GRPC_SLICE_LENGTH(tcp->read_slice);
@@ -140,7 +140,7 @@
   grpc_slice sub;
   grpc_error *error;
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  grpc_tcp *tcp = stream->data;
+  grpc_tcp *tcp = (grpc_tcp *)stream->data;
   grpc_closure *cb = tcp->read_cb;
   if (nread == 0) {
     // Nothing happened. Wait for the next callback
@@ -207,7 +207,7 @@
 }
 
 static void write_callback(uv_write_t *req, int status) {
-  grpc_tcp *tcp = req->data;
+  grpc_tcp *tcp = (grpc_tcp *)req->data;
   grpc_error *error;
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
   grpc_closure *cb = tcp->write_cb;
@@ -269,7 +269,7 @@
 
   tcp->write_cb = cb;
   buffer_count = (unsigned int)tcp->write_slices->count;
-  buffers = gpr_malloc(sizeof(uv_buf_t) * buffer_count);
+  buffers = (uv_buf_t *)gpr_malloc(sizeof(uv_buf_t) * buffer_count);
   grpc_resource_user_alloc(exec_ctx, tcp->resource_user,
                            sizeof(uv_buf_t) * buffer_count, NULL);
   for (i = 0; i < buffer_count; i++) {
diff --git a/src/core/lib/iomgr/tcp_uv.h b/src/core/lib/iomgr/tcp_uv.h
index 0e67481..ba7db8a 100644
--- a/src/core/lib/iomgr/tcp_uv.h
+++ b/src/core/lib/iomgr/tcp_uv.h
@@ -38,8 +38,16 @@
 
 #define GRPC_TCP_DEFAULT_READ_SLICE_SIZE 8192
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 grpc_endpoint *grpc_tcp_create(uv_tcp_t *handle,
                                grpc_resource_quota *resource_quota,
                                char *peer_string);
 
-#endif /* GRPC_CORE_LIB_IOMGR_TCP_UV_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_TCP_UV_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/tcp_windows.c b/src/core/lib/iomgr/tcp_windows.cc
similarity index 98%
rename from src/core/lib/iomgr/tcp_windows.c
rename to src/core/lib/iomgr/tcp_windows.cc
index 2cbb974..dc84e56 100644
--- a/src/core/lib/iomgr/tcp_windows.c
+++ b/src/core/lib/iomgr/tcp_windows.cc
@@ -37,6 +37,7 @@
 #include "src/core/lib/iomgr/sockaddr_utils.h"
 #include "src/core/lib/iomgr/socket_windows.h"
 #include "src/core/lib/iomgr/tcp_client.h"
+#include "src/core/lib/iomgr/tcp_windows.h"
 #include "src/core/lib/iomgr/timer.h"
 #include "src/core/lib/slice/slice_internal.h"
 
@@ -158,7 +159,7 @@
 
 /* Asynchronous callback from the IOCP, or the background thread. */
 static void on_read(grpc_exec_ctx *exec_ctx, void *tcpp, grpc_error *error) {
-  grpc_tcp *tcp = tcpp;
+  grpc_tcp *tcp = (grpc_tcp *)tcpp;
   grpc_closure *cb = tcp->read_cb;
   grpc_winsocket *socket = tcp->socket;
   grpc_slice sub;
@@ -418,14 +419,14 @@
 
 grpc_endpoint *grpc_tcp_create(grpc_exec_ctx *exec_ctx, grpc_winsocket *socket,
                                grpc_channel_args *channel_args,
-                               char *peer_string) {
+                               const char *peer_string) {
   grpc_resource_quota *resource_quota = grpc_resource_quota_create(NULL);
   if (channel_args != NULL) {
     for (size_t i = 0; i < channel_args->num_args; i++) {
       if (0 == strcmp(channel_args->args[i].key, GRPC_ARG_RESOURCE_QUOTA)) {
         grpc_resource_quota_unref_internal(exec_ctx, resource_quota);
         resource_quota = grpc_resource_quota_ref_internal(
-            channel_args->args[i].value.pointer.p);
+            (grpc_resource_quota *)channel_args->args[i].value.pointer.p);
       }
     }
   }
diff --git a/src/core/lib/iomgr/tcp_windows.h b/src/core/lib/iomgr/tcp_windows.h
index 864184c..f3697f7 100644
--- a/src/core/lib/iomgr/tcp_windows.h
+++ b/src/core/lib/iomgr/tcp_windows.h
@@ -32,13 +32,21 @@
 #include "src/core/lib/iomgr/endpoint.h"
 #include "src/core/lib/iomgr/socket_windows.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Create a tcp endpoint given a winsock handle.
  * Takes ownership of the handle.
  */
 grpc_endpoint *grpc_tcp_create(grpc_exec_ctx *exec_ctx, grpc_winsocket *socket,
                                grpc_channel_args *channel_args,
-                               char *peer_string);
+                               const char *peer_string);
 
 grpc_error *grpc_tcp_prepare_socket(SOCKET sock);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_IOMGR_TCP_WINDOWS_H */
diff --git a/src/core/lib/iomgr/time_averaged_stats.c b/src/core/lib/iomgr/time_averaged_stats.cc
similarity index 100%
rename from src/core/lib/iomgr/time_averaged_stats.c
rename to src/core/lib/iomgr/time_averaged_stats.cc
diff --git a/src/core/lib/iomgr/time_averaged_stats.h b/src/core/lib/iomgr/time_averaged_stats.h
index 8745f7f..e255b58 100644
--- a/src/core/lib/iomgr/time_averaged_stats.h
+++ b/src/core/lib/iomgr/time_averaged_stats.h
@@ -19,6 +19,10 @@
 #ifndef GRPC_CORE_LIB_IOMGR_TIME_AVERAGED_STATS_H
 #define GRPC_CORE_LIB_IOMGR_TIME_AVERAGED_STATS_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* This tracks a time-decaying weighted average.  It works by collecting
    batches of samples and then mixing their average into a time-decaying
    weighted mean.  It is designed for batch operations where we do many adds
@@ -70,4 +74,8 @@
    value. */
 double grpc_time_averaged_stats_update_average(grpc_time_averaged_stats* stats);
 
-#endif /* GRPC_CORE_LIB_IOMGR_TIME_AVERAGED_STATS_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_TIME_AVERAGED_STATS_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/timer.h b/src/core/lib/iomgr/timer.h
index ac392f8..466600d 100644
--- a/src/core/lib/iomgr/timer.h
+++ b/src/core/lib/iomgr/timer.h
@@ -32,6 +32,10 @@
 #include "src/core/lib/iomgr/exec_ctx.h"
 #include "src/core/lib/iomgr/iomgr.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct grpc_timer grpc_timer;
 
 /* Initialize *timer. When expired or canceled, closure will be called with
@@ -103,4 +107,8 @@
 
 void grpc_kick_poller(void);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_IOMGR_TIMER_H */
diff --git a/src/core/lib/iomgr/timer_generic.c b/src/core/lib/iomgr/timer_generic.cc
similarity index 99%
rename from src/core/lib/iomgr/timer_generic.c
rename to src/core/lib/iomgr/timer_generic.cc
index 2472cf2..971d80d 100644
--- a/src/core/lib/iomgr/timer_generic.c
+++ b/src/core/lib/iomgr/timer_generic.cc
@@ -18,6 +18,8 @@
 
 #include "src/core/lib/iomgr/port.h"
 
+#include <inttypes.h>
+
 #ifdef GRPC_TIMER_USE_GENERIC
 
 #include "src/core/lib/iomgr/timer.h"
@@ -41,9 +43,11 @@
 #define MIN_QUEUE_WINDOW_DURATION 0.01
 #define MAX_QUEUE_WINDOW_DURATION 1
 
+extern "C" {
 grpc_tracer_flag grpc_timer_trace = GRPC_TRACER_INITIALIZER(false, "timer");
 grpc_tracer_flag grpc_timer_check_trace =
     GRPC_TRACER_INITIALIZER(false, "timer_check");
+}
 
 /* A "timer shard". Contains a 'heap' and a 'list' of timers. All timers with
  * deadlines earlier than 'queue_deadline" cap are maintained in the heap and
diff --git a/src/core/lib/iomgr/timer_heap.c b/src/core/lib/iomgr/timer_heap.cc
similarity index 100%
rename from src/core/lib/iomgr/timer_heap.c
rename to src/core/lib/iomgr/timer_heap.cc
diff --git a/src/core/lib/iomgr/timer_heap.h b/src/core/lib/iomgr/timer_heap.h
index 0d64199..f15e8a3 100644
--- a/src/core/lib/iomgr/timer_heap.h
+++ b/src/core/lib/iomgr/timer_heap.h
@@ -21,6 +21,10 @@
 
 #include "src/core/lib/iomgr/timer.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct {
   grpc_timer **timers;
   uint32_t timer_count;
@@ -39,4 +43,8 @@
 
 int grpc_timer_heap_is_empty(grpc_timer_heap *heap);
 
-#endif /* GRPC_CORE_LIB_IOMGR_TIMER_HEAP_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_TIMER_HEAP_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/timer_manager.c b/src/core/lib/iomgr/timer_manager.cc
similarity index 98%
rename from src/core/lib/iomgr/timer_manager.c
rename to src/core/lib/iomgr/timer_manager.cc
index 04ca445..9b54fab 100644
--- a/src/core/lib/iomgr/timer_manager.c
+++ b/src/core/lib/iomgr/timer_manager.cc
@@ -20,8 +20,11 @@
 
 #include <grpc/support/alloc.h>
 #include <grpc/support/log.h>
+#include <grpc/support/port_platform.h>
 #include <grpc/support/thd.h>
 
+#include <inttypes.h>
+
 #include "src/core/lib/debug/trace.h"
 #include "src/core/lib/iomgr/timer.h"
 
@@ -30,7 +33,7 @@
   struct completed_thread *next;
 } completed_thread;
 
-extern grpc_tracer_flag grpc_timer_check_trace;
+extern "C" grpc_tracer_flag grpc_timer_check_trace;
 
 // global mutex
 static gpr_mu g_mu;
diff --git a/src/core/lib/iomgr/timer_manager.h b/src/core/lib/iomgr/timer_manager.h
index 0ba5029..d8a59a9 100644
--- a/src/core/lib/iomgr/timer_manager.h
+++ b/src/core/lib/iomgr/timer_manager.h
@@ -21,6 +21,10 @@
 
 #include <stdbool.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Timer Manager tries to keep one thread waiting for the next timeout at all
    times */
 
@@ -34,4 +38,8 @@
  * disabled */
 void grpc_timer_manager_tick(void);
 
-#endif /* GRPC_CORE_LIB_IOMGR_TIMER_MANAGER_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_TIMER_MANAGER_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/timer_uv.c b/src/core/lib/iomgr/timer_uv.cc
similarity index 97%
rename from src/core/lib/iomgr/timer_uv.c
rename to src/core/lib/iomgr/timer_uv.cc
index adced41..53f79b5 100644
--- a/src/core/lib/iomgr/timer_uv.c
+++ b/src/core/lib/iomgr/timer_uv.cc
@@ -29,9 +29,11 @@
 
 #include <uv.h>
 
+extern "C" {
 grpc_tracer_flag grpc_timer_trace = GRPC_TRACER_INITIALIZER(false, "timer");
 grpc_tracer_flag grpc_timer_check_trace =
     GRPC_TRACER_INITIALIZER(false, "timer_check");
+}
 
 static void timer_close_callback(uv_handle_t *handle) { gpr_free(handle); }
 
@@ -66,7 +68,7 @@
   }
   timer->pending = 1;
   timeout = (uint64_t)gpr_time_to_millis(gpr_time_sub(deadline, now));
-  uv_timer = gpr_malloc(sizeof(uv_timer_t));
+  uv_timer = (uv_timer_t *)gpr_malloc(sizeof(uv_timer_t));
   uv_timer_init(uv_default_loop(), uv_timer);
   uv_timer->data = timer;
   timer->uv_timer = uv_timer;
diff --git a/src/core/lib/iomgr/udp_server.c b/src/core/lib/iomgr/udp_server.cc
similarity index 100%
rename from src/core/lib/iomgr/udp_server.c
rename to src/core/lib/iomgr/udp_server.cc
diff --git a/src/core/lib/iomgr/udp_server.h b/src/core/lib/iomgr/udp_server.h
index 881468e..bcd8572 100644
--- a/src/core/lib/iomgr/udp_server.h
+++ b/src/core/lib/iomgr/udp_server.h
@@ -23,6 +23,10 @@
 #include "src/core/lib/iomgr/ev_posix.h"
 #include "src/core/lib/iomgr/resolve_address.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Forward decl of struct grpc_server */
 /* This is not typedef'ed to avoid a typedef-redefinition error */
 struct grpc_server;
@@ -73,4 +77,8 @@
 void grpc_udp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_udp_server *server,
                              grpc_closure *on_done);
 
-#endif /* GRPC_CORE_LIB_IOMGR_UDP_SERVER_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_UDP_SERVER_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/unix_sockets_posix.c b/src/core/lib/iomgr/unix_sockets_posix.cc
similarity index 100%
rename from src/core/lib/iomgr/unix_sockets_posix.c
rename to src/core/lib/iomgr/unix_sockets_posix.cc
diff --git a/src/core/lib/iomgr/unix_sockets_posix.h b/src/core/lib/iomgr/unix_sockets_posix.h
index 25b64b3..b96131a 100644
--- a/src/core/lib/iomgr/unix_sockets_posix.h
+++ b/src/core/lib/iomgr/unix_sockets_posix.h
@@ -25,6 +25,10 @@
 
 #include "src/core/lib/iomgr/resolve_address.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 void grpc_create_socketpair_if_unix(int sv[2]);
 
 grpc_error *grpc_resolve_unix_domain_address(
@@ -38,4 +42,8 @@
 char *grpc_sockaddr_to_uri_unix_if_possible(
     const grpc_resolved_address *resolved_addr);
 
-#endif /* GRPC_CORE_LIB_IOMGR_UNIX_SOCKETS_POSIX_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_UNIX_SOCKETS_POSIX_H */
\ No newline at end of file
diff --git a/src/core/lib/iomgr/unix_sockets_posix_noop.c b/src/core/lib/iomgr/unix_sockets_posix_noop.cc
similarity index 100%
rename from src/core/lib/iomgr/unix_sockets_posix_noop.c
rename to src/core/lib/iomgr/unix_sockets_posix_noop.cc
diff --git a/src/core/lib/iomgr/wakeup_fd_cv.c b/src/core/lib/iomgr/wakeup_fd_cv.cc
similarity index 100%
rename from src/core/lib/iomgr/wakeup_fd_cv.c
rename to src/core/lib/iomgr/wakeup_fd_cv.cc
diff --git a/src/core/lib/iomgr/wakeup_fd_cv.h b/src/core/lib/iomgr/wakeup_fd_cv.h
index dc170ad..dcd7bdb 100644
--- a/src/core/lib/iomgr/wakeup_fd_cv.h
+++ b/src/core/lib/iomgr/wakeup_fd_cv.h
@@ -40,6 +40,10 @@
 #define GRPC_FD_TO_IDX(fd) (-(fd)-1)
 #define GRPC_IDX_TO_FD(idx) (-(idx)-1)
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct cv_node {
   gpr_cv* cv;
   struct cv_node* next;
@@ -62,4 +66,10 @@
   grpc_poll_function_type poll;
 } cv_fd_table;
 
+extern const grpc_wakeup_fd_vtable grpc_cv_wakeup_fd_vtable;
+
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_IOMGR_WAKEUP_FD_CV_H */
diff --git a/src/core/lib/iomgr/wakeup_fd_eventfd.c b/src/core/lib/iomgr/wakeup_fd_eventfd.cc
similarity index 100%
rename from src/core/lib/iomgr/wakeup_fd_eventfd.c
rename to src/core/lib/iomgr/wakeup_fd_eventfd.cc
diff --git a/src/core/lib/iomgr/wakeup_fd_nospecial.c b/src/core/lib/iomgr/wakeup_fd_nospecial.cc
similarity index 100%
rename from src/core/lib/iomgr/wakeup_fd_nospecial.c
rename to src/core/lib/iomgr/wakeup_fd_nospecial.cc
diff --git a/src/core/lib/iomgr/wakeup_fd_pipe.c b/src/core/lib/iomgr/wakeup_fd_pipe.cc
similarity index 97%
rename from src/core/lib/iomgr/wakeup_fd_pipe.c
rename to src/core/lib/iomgr/wakeup_fd_pipe.cc
index 4189488..05d69dc 100644
--- a/src/core/lib/iomgr/wakeup_fd_pipe.c
+++ b/src/core/lib/iomgr/wakeup_fd_pipe.cc
@@ -20,6 +20,7 @@
 
 #ifdef GRPC_POSIX_WAKEUP_FD
 
+#include "src/core/lib/iomgr/wakeup_fd_pipe.h"
 #include "src/core/lib/iomgr/wakeup_fd_posix.h"
 
 #include <errno.h>
diff --git a/src/core/lib/iomgr/wakeup_fd_pipe.h b/src/core/lib/iomgr/wakeup_fd_pipe.h
index f860406..9bbb5e2 100644
--- a/src/core/lib/iomgr/wakeup_fd_pipe.h
+++ b/src/core/lib/iomgr/wakeup_fd_pipe.h
@@ -21,6 +21,14 @@
 
 #include "src/core/lib/iomgr/wakeup_fd_posix.h"
 
-extern grpc_wakeup_fd_vtable grpc_pipe_wakeup_fd_vtable;
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern const grpc_wakeup_fd_vtable grpc_pipe_wakeup_fd_vtable;
+
+#ifdef __cplusplus
+}
+#endif
 
 #endif /* GRPC_CORE_LIB_IOMGR_WAKEUP_FD_PIPE_H */
diff --git a/src/core/lib/iomgr/wakeup_fd_posix.c b/src/core/lib/iomgr/wakeup_fd_posix.cc
similarity index 97%
rename from src/core/lib/iomgr/wakeup_fd_posix.c
rename to src/core/lib/iomgr/wakeup_fd_posix.cc
index 25daa7d..9af96d3 100644
--- a/src/core/lib/iomgr/wakeup_fd_posix.c
+++ b/src/core/lib/iomgr/wakeup_fd_posix.cc
@@ -25,7 +25,6 @@
 #include "src/core/lib/iomgr/wakeup_fd_pipe.h"
 #include "src/core/lib/iomgr/wakeup_fd_posix.h"
 
-extern grpc_wakeup_fd_vtable grpc_cv_wakeup_fd_vtable;
 static const grpc_wakeup_fd_vtable *wakeup_fd_vtable = NULL;
 
 int grpc_allow_specialized_wakeup_fd = 1;
diff --git a/src/core/lib/iomgr/wakeup_fd_posix.h b/src/core/lib/iomgr/wakeup_fd_posix.h
index a9584d0..ae7849f 100644
--- a/src/core/lib/iomgr/wakeup_fd_posix.h
+++ b/src/core/lib/iomgr/wakeup_fd_posix.h
@@ -49,6 +49,10 @@
 
 #include "src/core/lib/iomgr/error.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 void grpc_wakeup_fd_global_init(void);
 void grpc_wakeup_fd_global_destroy(void);
 
@@ -91,4 +95,8 @@
  * wakeup_fd_nospecial.c if no such implementation exists. */
 extern const grpc_wakeup_fd_vtable grpc_specialized_wakeup_fd_vtable;
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_IOMGR_WAKEUP_FD_POSIX_H */
diff --git a/src/core/lib/json/json.c b/src/core/lib/json/json.cc
similarity index 100%
rename from src/core/lib/json/json.c
rename to src/core/lib/json/json.cc
diff --git a/src/core/lib/json/json.h b/src/core/lib/json/json.h
index bbd4302..81b7e0c 100644
--- a/src/core/lib/json/json.h
+++ b/src/core/lib/json/json.h
@@ -23,6 +23,10 @@
 
 #include "src/core/lib/json/json_common.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* A tree-like structure to hold json values. The key and value pointers
  * are not owned by it.
  */
@@ -70,4 +74,8 @@
 grpc_json* grpc_json_create(grpc_json_type type);
 void grpc_json_destroy(grpc_json* json);
 
-#endif /* GRPC_CORE_LIB_JSON_JSON_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_JSON_JSON_H */
\ No newline at end of file
diff --git a/src/core/lib/json/json_reader.c b/src/core/lib/json/json_reader.cc
similarity index 100%
rename from src/core/lib/json/json_reader.c
rename to src/core/lib/json/json_reader.cc
diff --git a/src/core/lib/json/json_reader.h b/src/core/lib/json/json_reader.h
index 577fbbb..ab2384f 100644
--- a/src/core/lib/json/json_reader.h
+++ b/src/core/lib/json/json_reader.h
@@ -22,6 +22,10 @@
 #include <grpc/support/port_platform.h>
 #include "src/core/lib/json/json_common.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef enum {
   GRPC_JSON_STATE_OBJECT_KEY_BEGIN,
   GRPC_JSON_STATE_OBJECT_KEY_STRING,
@@ -142,4 +146,8 @@
  */
 int grpc_json_reader_is_complete(grpc_json_reader *reader);
 
-#endif /* GRPC_CORE_LIB_JSON_JSON_READER_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_JSON_JSON_READER_H */
\ No newline at end of file
diff --git a/src/core/lib/json/json_string.c b/src/core/lib/json/json_string.cc
similarity index 100%
rename from src/core/lib/json/json_string.c
rename to src/core/lib/json/json_string.cc
diff --git a/src/core/lib/json/json_writer.c b/src/core/lib/json/json_writer.cc
similarity index 100%
rename from src/core/lib/json/json_writer.c
rename to src/core/lib/json/json_writer.cc
diff --git a/src/core/lib/json/json_writer.h b/src/core/lib/json/json_writer.h
index 8779039..18bd2a8 100644
--- a/src/core/lib/json/json_writer.h
+++ b/src/core/lib/json/json_writer.h
@@ -35,6 +35,10 @@
 
 #include "src/core/lib/json/json_common.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct grpc_json_writer_vtable {
   /* Adds a character to the output stream. */
   void (*output_char)(void *userdata, char);
@@ -79,4 +83,8 @@
 void grpc_json_writer_value_string(grpc_json_writer *writer,
                                    const char *string);
 
-#endif /* GRPC_CORE_LIB_JSON_JSON_WRITER_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_JSON_JSON_WRITER_H */
\ No newline at end of file
diff --git a/src/core/lib/profiling/basic_timers.c b/src/core/lib/profiling/basic_timers.cc
similarity index 99%
rename from src/core/lib/profiling/basic_timers.c
rename to src/core/lib/profiling/basic_timers.cc
index c7645b7..ab9d604 100644
--- a/src/core/lib/profiling/basic_timers.c
+++ b/src/core/lib/profiling/basic_timers.cc
@@ -18,10 +18,10 @@
 
 #include <grpc/support/port_platform.h>
 
-#ifdef GRPC_BASIC_PROFILER
-
 #include "src/core/lib/profiling/timers.h"
 
+#ifdef GRPC_BASIC_PROFILER
+
 #include <grpc/support/alloc.h>
 #include <grpc/support/log.h>
 #include <grpc/support/sync.h>
diff --git a/src/core/lib/profiling/stap_timers.c b/src/core/lib/profiling/stap_timers.cc
similarity index 100%
rename from src/core/lib/profiling/stap_timers.c
rename to src/core/lib/profiling/stap_timers.cc
diff --git a/src/core/lib/security/context/security_context.c b/src/core/lib/security/context/security_context.cc
similarity index 93%
rename from src/core/lib/security/context/security_context.c
rename to src/core/lib/security/context/security_context.cc
index 8fff2c9..31d800b 100644
--- a/src/core/lib/security/context/security_context.c
+++ b/src/core/lib/security/context/security_context.cc
@@ -82,7 +82,8 @@
 /* --- grpc_client_security_context --- */
 
 grpc_client_security_context *grpc_client_security_context_create(void) {
-  return gpr_zalloc(sizeof(grpc_client_security_context));
+  return (grpc_client_security_context *)gpr_zalloc(
+      sizeof(grpc_client_security_context));
 }
 
 void grpc_client_security_context_destroy(void *ctx) {
@@ -100,7 +101,8 @@
 /* --- grpc_server_security_context --- */
 
 grpc_server_security_context *grpc_server_security_context_create(void) {
-  return gpr_zalloc(sizeof(grpc_server_security_context));
+  return (grpc_server_security_context *)gpr_zalloc(
+      sizeof(grpc_server_security_context));
 }
 
 void grpc_server_security_context_destroy(void *ctx) {
@@ -117,7 +119,8 @@
 static grpc_auth_property_iterator empty_iterator = {NULL, 0, NULL};
 
 grpc_auth_context *grpc_auth_context_create(grpc_auth_context *chained) {
-  grpc_auth_context *ctx = gpr_zalloc(sizeof(grpc_auth_context));
+  grpc_auth_context *ctx =
+      (grpc_auth_context *)gpr_zalloc(sizeof(grpc_auth_context));
   gpr_ref_init(&ctx->refcount, 1);
   if (chained != NULL) {
     ctx->chained = GRPC_AUTH_CONTEXT_REF(chained, "chained");
@@ -258,9 +261,9 @@
   if (ctx->properties.count == ctx->properties.capacity) {
     ctx->properties.capacity =
         GPR_MAX(ctx->properties.capacity + 8, ctx->properties.capacity * 2);
-    ctx->properties.array =
-        gpr_realloc(ctx->properties.array,
-                    ctx->properties.capacity * sizeof(grpc_auth_property));
+    ctx->properties.array = (grpc_auth_property *)gpr_realloc(
+        ctx->properties.array,
+        ctx->properties.capacity * sizeof(grpc_auth_property));
   }
 }
 
@@ -275,7 +278,7 @@
   ensure_auth_context_capacity(ctx);
   prop = &ctx->properties.array[ctx->properties.count++];
   prop->name = gpr_strdup(name);
-  prop->value = gpr_malloc(value_length + 1);
+  prop->value = (char *)gpr_malloc(value_length + 1);
   memcpy(prop->value, value, value_length);
   prop->value[value_length] = '\0';
   prop->value_length = value_length;
@@ -302,11 +305,12 @@
 }
 
 static void auth_context_pointer_arg_destroy(grpc_exec_ctx *exec_ctx, void *p) {
-  GRPC_AUTH_CONTEXT_UNREF(p, "auth_context_pointer_arg");
+  GRPC_AUTH_CONTEXT_UNREF((grpc_auth_context *)p, "auth_context_pointer_arg");
 }
 
 static void *auth_context_pointer_arg_copy(void *p) {
-  return GRPC_AUTH_CONTEXT_REF(p, "auth_context_pointer_arg");
+  return GRPC_AUTH_CONTEXT_REF((grpc_auth_context *)p,
+                               "auth_context_pointer_arg");
 }
 
 static int auth_context_pointer_cmp(void *a, void *b) { return GPR_ICMP(a, b); }
@@ -316,7 +320,7 @@
     auth_context_pointer_cmp};
 
 grpc_arg grpc_auth_context_to_arg(grpc_auth_context *p) {
-  return grpc_channel_arg_pointer_create(GRPC_AUTH_CONTEXT_ARG, p,
+  return grpc_channel_arg_pointer_create((char *)GRPC_AUTH_CONTEXT_ARG, p,
                                          &auth_context_pointer_vtable);
 }
 
@@ -327,7 +331,7 @@
             GRPC_AUTH_CONTEXT_ARG);
     return NULL;
   }
-  return arg->value.pointer.p;
+  return (grpc_auth_context *)arg->value.pointer.p;
 }
 
 grpc_auth_context *grpc_find_auth_context_in_args(
diff --git a/src/core/lib/security/credentials/composite/composite_credentials.c b/src/core/lib/security/credentials/composite/composite_credentials.cc
similarity index 95%
rename from src/core/lib/security/credentials/composite/composite_credentials.c
rename to src/core/lib/security/credentials/composite/composite_credentials.cc
index b67ff48..779300a 100644
--- a/src/core/lib/security/credentials/composite/composite_credentials.c
+++ b/src/core/lib/security/credentials/composite/composite_credentials.cc
@@ -79,7 +79,8 @@
     grpc_error **error) {
   grpc_composite_call_credentials *c = (grpc_composite_call_credentials *)creds;
   grpc_composite_call_credentials_metadata_context *ctx;
-  ctx = gpr_zalloc(sizeof(grpc_composite_call_credentials_metadata_context));
+  ctx = (grpc_composite_call_credentials_metadata_context *)gpr_zalloc(
+      sizeof(grpc_composite_call_credentials_metadata_context));
   ctx->composite_creds = c;
   ctx->pollent = pollent;
   ctx->auth_md_context = auth_md_context;
@@ -146,7 +147,8 @@
   GPR_ASSERT(reserved == NULL);
   GPR_ASSERT(creds1 != NULL);
   GPR_ASSERT(creds2 != NULL);
-  c = gpr_zalloc(sizeof(grpc_composite_call_credentials));
+  c = (grpc_composite_call_credentials *)gpr_zalloc(
+      sizeof(grpc_composite_call_credentials));
   c->base.type = GRPC_CALL_CREDENTIALS_TYPE_COMPOSITE;
   c->base.vtable = &composite_call_credentials_vtable;
   gpr_ref_init(&c->base.refcount, 1);
@@ -154,7 +156,8 @@
   creds2_array = get_creds_array(&creds2);
   c->inner.num_creds = creds1_array.num_creds + creds2_array.num_creds;
   creds_array_byte_size = c->inner.num_creds * sizeof(grpc_call_credentials *);
-  c->inner.creds_array = gpr_zalloc(creds_array_byte_size);
+  c->inner.creds_array =
+      (grpc_call_credentials **)gpr_zalloc(creds_array_byte_size);
   for (i = 0; i < creds1_array.num_creds; i++) {
     grpc_call_credentials *cur_creds = creds1_array.creds_array[i];
     c->inner.creds_array[i] = grpc_call_credentials_ref(cur_creds);
@@ -248,7 +251,8 @@
 grpc_channel_credentials *grpc_composite_channel_credentials_create(
     grpc_channel_credentials *channel_creds, grpc_call_credentials *call_creds,
     void *reserved) {
-  grpc_composite_channel_credentials *c = gpr_zalloc(sizeof(*c));
+  grpc_composite_channel_credentials *c =
+      (grpc_composite_channel_credentials *)gpr_zalloc(sizeof(*c));
   GPR_ASSERT(channel_creds != NULL && call_creds != NULL && reserved == NULL);
   GRPC_API_TRACE(
       "grpc_composite_channel_credentials_create(channel_creds=%p, "
diff --git a/src/core/lib/security/credentials/composite/composite_credentials.h b/src/core/lib/security/credentials/composite/composite_credentials.h
index 3076afc..6e9f9a8 100644
--- a/src/core/lib/security/credentials/composite/composite_credentials.h
+++ b/src/core/lib/security/credentials/composite/composite_credentials.h
@@ -21,6 +21,10 @@
 
 #include "src/core/lib/security/credentials/credentials.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct {
   grpc_call_credentials **creds_array;
   size_t num_creds;
@@ -53,5 +57,9 @@
   grpc_call_credentials_array inner;
 } grpc_composite_call_credentials;
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_COMPOSITE_COMPOSITE_CREDENTIALS_H \
           */
diff --git a/src/core/lib/security/credentials/credentials.c b/src/core/lib/security/credentials/credentials.cc
similarity index 91%
rename from src/core/lib/security/credentials/credentials.c
rename to src/core/lib/security/credentials/credentials.cc
index 8a67c98..ebbf350 100644
--- a/src/core/lib/security/credentials/credentials.c
+++ b/src/core/lib/security/credentials/credentials.cc
@@ -40,7 +40,8 @@
 grpc_credentials_metadata_request *grpc_credentials_metadata_request_create(
     grpc_call_credentials *creds) {
   grpc_credentials_metadata_request *r =
-      gpr_zalloc(sizeof(grpc_credentials_metadata_request));
+      (grpc_credentials_metadata_request *)gpr_zalloc(
+          sizeof(grpc_credentials_metadata_request));
   r->creds = grpc_call_credentials_ref(creds);
   return r;
 }
@@ -148,11 +149,11 @@
 }
 
 static void credentials_pointer_arg_destroy(grpc_exec_ctx *exec_ctx, void *p) {
-  grpc_channel_credentials_unref(exec_ctx, p);
+  grpc_channel_credentials_unref(exec_ctx, (grpc_channel_credentials *)p);
 }
 
 static void *credentials_pointer_arg_copy(void *p) {
-  return grpc_channel_credentials_ref(p);
+  return grpc_channel_credentials_ref((grpc_channel_credentials *)p);
 }
 
 static int credentials_pointer_cmp(void *a, void *b) { return GPR_ICMP(a, b); }
@@ -163,8 +164,9 @@
 
 grpc_arg grpc_channel_credentials_to_arg(
     grpc_channel_credentials *credentials) {
-  return grpc_channel_arg_pointer_create(
-      GRPC_ARG_CHANNEL_CREDENTIALS, credentials, &credentials_pointer_vtable);
+  return grpc_channel_arg_pointer_create((char *)GRPC_ARG_CHANNEL_CREDENTIALS,
+                                         credentials,
+                                         &credentials_pointer_vtable);
 }
 
 grpc_channel_credentials *grpc_channel_credentials_from_arg(
@@ -175,7 +177,7 @@
             GRPC_ARG_CHANNEL_CREDENTIALS);
     return NULL;
   }
-  return arg->value.pointer.p;
+  return (grpc_channel_credentials *)arg->value.pointer.p;
 }
 
 grpc_channel_credentials *grpc_channel_credentials_find_in_args(
@@ -244,11 +246,11 @@
 
 static void server_credentials_pointer_arg_destroy(grpc_exec_ctx *exec_ctx,
                                                    void *p) {
-  grpc_server_credentials_unref(exec_ctx, p);
+  grpc_server_credentials_unref(exec_ctx, (grpc_server_credentials *)p);
 }
 
 static void *server_credentials_pointer_arg_copy(void *p) {
-  return grpc_server_credentials_ref(p);
+  return grpc_server_credentials_ref((grpc_server_credentials *)p);
 }
 
 static int server_credentials_pointer_cmp(void *a, void *b) {
@@ -260,7 +262,7 @@
     server_credentials_pointer_cmp};
 
 grpc_arg grpc_server_credentials_to_arg(grpc_server_credentials *p) {
-  return grpc_channel_arg_pointer_create(GRPC_SERVER_CREDENTIALS_ARG, p,
+  return grpc_channel_arg_pointer_create((char *)GRPC_SERVER_CREDENTIALS_ARG, p,
                                          &cred_ptr_vtable);
 }
 
@@ -271,7 +273,7 @@
             GRPC_SERVER_CREDENTIALS_ARG);
     return NULL;
   }
-  return arg->value.pointer.p;
+  return (grpc_server_credentials *)arg->value.pointer.p;
 }
 
 grpc_server_credentials *grpc_find_server_credentials_in_args(
diff --git a/src/core/lib/security/credentials/credentials.h b/src/core/lib/security/credentials/credentials.h
index 04a54b0..73e39ae 100644
--- a/src/core/lib/security/credentials/credentials.h
+++ b/src/core/lib/security/credentials/credentials.h
@@ -29,6 +29,10 @@
 #include "src/core/lib/iomgr/polling_entity.h"
 #include "src/core/lib/security/transport/security_connector.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 struct grpc_http_response;
 
 /* --- Constants. --- */
@@ -252,4 +256,8 @@
 void grpc_credentials_metadata_request_destroy(
     grpc_exec_ctx *exec_ctx, grpc_credentials_metadata_request *r);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_CREDENTIALS_H */
diff --git a/src/core/lib/security/credentials/credentials_metadata.c b/src/core/lib/security/credentials/credentials_metadata.cc
similarity index 95%
rename from src/core/lib/security/credentials/credentials_metadata.c
rename to src/core/lib/security/credentials/credentials_metadata.cc
index ccd39e6..5ba98bd 100644
--- a/src/core/lib/security/credentials/credentials_metadata.c
+++ b/src/core/lib/security/credentials/credentials_metadata.cc
@@ -33,7 +33,8 @@
   while (new_size < target_size) {
     new_size *= 2;
   }
-  list->md = gpr_realloc(list->md, sizeof(grpc_mdelem) * new_size);
+  list->md =
+      (grpc_mdelem *)gpr_realloc(list->md, sizeof(grpc_mdelem) * new_size);
 }
 
 void grpc_credentials_mdelem_array_add(grpc_credentials_mdelem_array *list,
diff --git a/src/core/lib/security/credentials/fake/fake_credentials.c b/src/core/lib/security/credentials/fake/fake_credentials.cc
similarity index 91%
rename from src/core/lib/security/credentials/fake/fake_credentials.c
rename to src/core/lib/security/credentials/fake/fake_credentials.cc
index ac90178..795ca06 100644
--- a/src/core/lib/security/credentials/fake/fake_credentials.c
+++ b/src/core/lib/security/credentials/fake/fake_credentials.cc
@@ -60,7 +60,8 @@
 
 grpc_channel_credentials *grpc_fake_transport_security_credentials_create(
     void) {
-  grpc_channel_credentials *c = gpr_zalloc(sizeof(grpc_channel_credentials));
+  grpc_channel_credentials *c =
+      (grpc_channel_credentials *)gpr_zalloc(sizeof(grpc_channel_credentials));
   c->type = GRPC_CHANNEL_CREDENTIALS_TYPE_FAKE_TRANSPORT_SECURITY;
   c->vtable = &fake_transport_security_credentials_vtable;
   gpr_ref_init(&c->refcount, 1);
@@ -69,7 +70,8 @@
 
 grpc_server_credentials *grpc_fake_transport_security_server_credentials_create(
     void) {
-  grpc_server_credentials *c = gpr_malloc(sizeof(grpc_server_credentials));
+  grpc_server_credentials *c =
+      (grpc_server_credentials *)gpr_malloc(sizeof(grpc_server_credentials));
   memset(c, 0, sizeof(grpc_server_credentials));
   c->type = GRPC_CHANNEL_CREDENTIALS_TYPE_FAKE_TRANSPORT_SECURITY;
   gpr_ref_init(&c->refcount, 1);
@@ -78,8 +80,8 @@
 }
 
 grpc_arg grpc_fake_transport_expected_targets_arg(char *expected_targets) {
-  return grpc_channel_arg_string_create(GRPC_ARG_FAKE_SECURITY_EXPECTED_TARGETS,
-                                        expected_targets);
+  return grpc_channel_arg_string_create(
+      (char *)GRPC_ARG_FAKE_SECURITY_EXPECTED_TARGETS, expected_targets);
 }
 
 const char *grpc_fake_transport_get_expected_targets(
@@ -129,7 +131,8 @@
     grpc_exec_ctx *exec_ctx, const char *md_key, const char *md_value,
     bool is_async) {
   grpc_md_only_test_credentials *c =
-      gpr_zalloc(sizeof(grpc_md_only_test_credentials));
+      (grpc_md_only_test_credentials *)gpr_zalloc(
+          sizeof(grpc_md_only_test_credentials));
   c->base.type = GRPC_CALL_CREDENTIALS_TYPE_OAUTH2;
   c->base.vtable = &md_only_test_vtable;
   gpr_ref_init(&c->base.refcount, 1);
diff --git a/src/core/lib/security/credentials/fake/fake_credentials.h b/src/core/lib/security/credentials/fake/fake_credentials.h
index aa0f3b6..64f6f43 100644
--- a/src/core/lib/security/credentials/fake/fake_credentials.h
+++ b/src/core/lib/security/credentials/fake/fake_credentials.h
@@ -21,6 +21,10 @@
 
 #include "src/core/lib/security/credentials/credentials.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* -- Fake transport security credentials. -- */
 
 /* Creates a fake transport security credentials object for testing. */
@@ -56,4 +60,8 @@
   bool is_async;
 } grpc_md_only_test_credentials;
 
-#endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_FAKE_FAKE_CREDENTIALS_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_FAKE_FAKE_CREDENTIALS_H */
\ No newline at end of file
diff --git a/src/core/lib/security/credentials/google_default/credentials_generic.c b/src/core/lib/security/credentials/google_default/credentials_generic.cc
similarity index 100%
rename from src/core/lib/security/credentials/google_default/credentials_generic.c
rename to src/core/lib/security/credentials/google_default/credentials_generic.cc
diff --git a/src/core/lib/security/credentials/google_default/google_default_credentials.c b/src/core/lib/security/credentials/google_default/google_default_credentials.cc
similarity index 96%
rename from src/core/lib/security/credentials/google_default/google_default_credentials.c
rename to src/core/lib/security/credentials/google_default/google_default_credentials.cc
index 691d66d..8fe5802 100644
--- a/src/core/lib/security/credentials/google_default/google_default_credentials.c
+++ b/src/core/lib/security/credentials/google_default/google_default_credentials.cc
@@ -28,6 +28,7 @@
 #include "src/core/lib/http/parser.h"
 #include "src/core/lib/iomgr/load_file.h"
 #include "src/core/lib/iomgr/polling_entity.h"
+#include "src/core/lib/security/credentials/google_default/google_default_credentials.h"
 #include "src/core/lib/security/credentials/jwt/jwt_credentials.h"
 #include "src/core/lib/security/credentials/oauth2/oauth2_credentials.h"
 #include "src/core/lib/slice/slice_internal.h"
@@ -85,7 +86,7 @@
 }
 
 static void destroy_pollset(grpc_exec_ctx *exec_ctx, void *p, grpc_error *e) {
-  grpc_pollset_destroy(exec_ctx, p);
+  grpc_pollset_destroy(exec_ctx, (grpc_pollset *)p);
 }
 
 static int is_stack_running_on_compute_engine(grpc_exec_ctx *exec_ctx) {
@@ -98,7 +99,7 @@
      on compute engine. */
   gpr_timespec max_detection_delay = gpr_time_from_seconds(1, GPR_TIMESPAN);
 
-  grpc_pollset *pollset = gpr_zalloc(grpc_pollset_size());
+  grpc_pollset *pollset = (grpc_pollset *)gpr_zalloc(grpc_pollset_size());
   grpc_pollset_init(pollset, &g_polling_mu);
   detector.pollent = grpc_polling_entity_create_from_pollset(pollset);
   detector.is_done = 0;
@@ -106,8 +107,8 @@
 
   memset(&detector.response, 0, sizeof(detector.response));
   memset(&request, 0, sizeof(grpc_httpcli_request));
-  request.host = GRPC_COMPUTE_ENGINE_DETECTION_HOST;
-  request.http.path = "/";
+  request.host = (char *)GRPC_COMPUTE_ENGINE_DETECTION_HOST;
+  request.http.path = (char *)"/";
 
   grpc_httpcli_context_init(&context);
 
diff --git a/src/core/lib/security/credentials/google_default/google_default_credentials.h b/src/core/lib/security/credentials/google_default/google_default_credentials.h
index c3755e0..6667787 100644
--- a/src/core/lib/security/credentials/google_default/google_default_credentials.h
+++ b/src/core/lib/security/credentials/google_default/google_default_credentials.h
@@ -23,6 +23,10 @@
 
 #include "src/core/lib/security/credentials/credentials.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #define GRPC_GOOGLE_CLOUD_SDK_CONFIG_DIRECTORY "gcloud"
 #define GRPC_GOOGLE_WELL_KNOWN_CREDENTIALS_FILE \
   "application_default_credentials.json"
@@ -41,5 +45,9 @@
 
 void grpc_flush_cached_google_default_credentials(void);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_GOOGLE_DEFAULT_GOOGLE_DEFAULT_CREDENTIALS_H \
           */
diff --git a/src/core/lib/security/credentials/iam/iam_credentials.c b/src/core/lib/security/credentials/iam/iam_credentials.cc
similarity index 96%
rename from src/core/lib/security/credentials/iam/iam_credentials.c
rename to src/core/lib/security/credentials/iam/iam_credentials.cc
index 3de8319..e9cf208 100644
--- a/src/core/lib/security/credentials/iam/iam_credentials.c
+++ b/src/core/lib/security/credentials/iam/iam_credentials.cc
@@ -64,7 +64,8 @@
   GPR_ASSERT(reserved == NULL);
   GPR_ASSERT(token != NULL);
   GPR_ASSERT(authority_selector != NULL);
-  grpc_google_iam_credentials *c = gpr_zalloc(sizeof(*c));
+  grpc_google_iam_credentials *c =
+      (grpc_google_iam_credentials *)gpr_zalloc(sizeof(*c));
   c->base.type = GRPC_CALL_CREDENTIALS_TYPE_IAM;
   c->base.vtable = &iam_vtable;
   gpr_ref_init(&c->base.refcount, 1);
diff --git a/src/core/lib/security/credentials/jwt/json_token.c b/src/core/lib/security/credentials/jwt/json_token.cc
similarity index 97%
rename from src/core/lib/security/credentials/jwt/json_token.c
rename to src/core/lib/security/credentials/jwt/json_token.cc
index fff7125..8c30353 100644
--- a/src/core/lib/security/credentials/jwt/json_token.c
+++ b/src/core/lib/security/credentials/jwt/json_token.cc
@@ -20,6 +20,7 @@
 
 #include <string.h>
 
+#include <grpc/grpc_security.h>
 #include <grpc/support/alloc.h>
 #include <grpc/support/log.h>
 #include <grpc/support/string_util.h>
@@ -29,9 +30,11 @@
 #include "src/core/lib/slice/b64.h"
 #include "src/core/lib/support/string.h"
 
+extern "C" {
 #include <openssl/bio.h>
 #include <openssl/evp.h>
 #include <openssl/pem.h>
+}
 
 /* --- Constants. --- */
 
@@ -96,7 +99,7 @@
     gpr_log(GPR_ERROR, "Could not write into openssl BIO.");
     goto end;
   }
-  result.private_key = PEM_read_bio_RSAPrivateKey(bio, NULL, NULL, "");
+  result.private_key = PEM_read_bio_RSAPrivateKey(bio, NULL, NULL, (void *)"");
   if (result.private_key == NULL) {
     gpr_log(GPR_ERROR, "Could not deserialize private key.");
     goto end;
@@ -214,7 +217,7 @@
   size_t str1_len = strlen(str1);
   size_t str2_len = strlen(str2);
   size_t result_len = str1_len + 1 /* dot */ + str2_len;
-  char *result = gpr_malloc(result_len + 1 /* NULL terminated */);
+  char *result = (char *)gpr_malloc(result_len + 1 /* NULL terminated */);
   char *current = result;
   memcpy(current, str1, str1_len);
   current += str1_len;
@@ -266,7 +269,7 @@
     gpr_log(GPR_ERROR, "DigestFinal (get signature length) failed.");
     goto end;
   }
-  sig = gpr_malloc(sig_len);
+  sig = (unsigned char *)gpr_malloc(sig_len);
   if (EVP_DigestSignFinal(md_ctx, sig, &sig_len) != 1) {
     gpr_log(GPR_ERROR, "DigestFinal (signature compute) failed.");
     goto end;
diff --git a/src/core/lib/security/credentials/jwt/json_token.h b/src/core/lib/security/credentials/jwt/json_token.h
index e50790e..b923b02 100644
--- a/src/core/lib/security/credentials/jwt/json_token.h
+++ b/src/core/lib/security/credentials/jwt/json_token.h
@@ -19,6 +19,10 @@
 #ifndef GRPC_CORE_LIB_SECURITY_CREDENTIALS_JWT_JSON_TOKEN_H
 #define GRPC_CORE_LIB_SECURITY_CREDENTIALS_JWT_JSON_TOKEN_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #include <grpc/slice.h>
 #include <openssl/rsa.h>
 
@@ -70,4 +74,8 @@
 void grpc_jwt_encode_and_sign_set_override(
     grpc_jwt_encode_and_sign_override func);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_JWT_JSON_TOKEN_H */
diff --git a/src/core/lib/security/credentials/jwt/jwt_credentials.c b/src/core/lib/security/credentials/jwt/jwt_credentials.cc
similarity index 96%
rename from src/core/lib/security/credentials/jwt/jwt_credentials.c
rename to src/core/lib/security/credentials/jwt/jwt_credentials.cc
index 02c82e9..835dd67 100644
--- a/src/core/lib/security/credentials/jwt/jwt_credentials.c
+++ b/src/core/lib/security/credentials/jwt/jwt_credentials.cc
@@ -16,8 +16,11 @@
  *
  */
 
+#include <grpc/support/port_platform.h>
+
 #include "src/core/lib/security/credentials/jwt/jwt_credentials.h"
 
+#include <inttypes.h>
 #include <string.h>
 
 #include "src/core/lib/surface/api_trace.h"
@@ -125,7 +128,8 @@
     gpr_log(GPR_ERROR, "Invalid input for jwt credentials creation");
     return NULL;
   }
-  c = gpr_zalloc(sizeof(grpc_service_account_jwt_access_credentials));
+  c = (grpc_service_account_jwt_access_credentials *)gpr_zalloc(
+      sizeof(grpc_service_account_jwt_access_credentials));
   c->base.type = GRPC_CALL_CREDENTIALS_TYPE_JWT;
   gpr_ref_init(&c->base.refcount, 1);
   c->base.vtable = &jwt_vtable;
diff --git a/src/core/lib/security/credentials/jwt/jwt_credentials.h b/src/core/lib/security/credentials/jwt/jwt_credentials.h
index 07f4022..c09485f 100644
--- a/src/core/lib/security/credentials/jwt/jwt_credentials.h
+++ b/src/core/lib/security/credentials/jwt/jwt_credentials.h
@@ -22,6 +22,10 @@
 #include "src/core/lib/security/credentials/credentials.h"
 #include "src/core/lib/security/credentials/jwt/json_token.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct {
   grpc_call_credentials base;
 
@@ -45,4 +49,8 @@
     grpc_exec_ctx *exec_ctx, grpc_auth_json_key key,
     gpr_timespec token_lifetime);
 
-#endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_JWT_JWT_CREDENTIALS_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_JWT_JWT_CREDENTIALS_H */
\ No newline at end of file
diff --git a/src/core/lib/security/credentials/jwt/jwt_verifier.c b/src/core/lib/security/credentials/jwt/jwt_verifier.cc
similarity index 96%
rename from src/core/lib/security/credentials/jwt/jwt_verifier.c
rename to src/core/lib/security/credentials/jwt/jwt_verifier.cc
index a27284b..aea16de 100644
--- a/src/core/lib/security/credentials/jwt/jwt_verifier.c
+++ b/src/core/lib/security/credentials/jwt/jwt_verifier.cc
@@ -26,7 +26,10 @@
 #include <grpc/support/string_util.h>
 #include <grpc/support/sync.h>
 #include <grpc/support/useful.h>
+
+extern "C" {
 #include <openssl/pem.h>
+}
 
 #include "src/core/lib/http/httpcli.h"
 #include "src/core/lib/iomgr/polling_entity.h"
@@ -129,7 +132,7 @@
 static jose_header *jose_header_from_json(grpc_exec_ctx *exec_ctx,
                                           grpc_json *json, grpc_slice buffer) {
   grpc_json *cur;
-  jose_header *h = gpr_zalloc(sizeof(jose_header));
+  jose_header *h = (jose_header *)gpr_zalloc(sizeof(jose_header));
   h->buffer = buffer;
   for (cur = json->child; cur != NULL; cur = cur->next) {
     if (strcmp(cur->key, "alg") == 0) {
@@ -231,7 +234,8 @@
 grpc_jwt_claims *grpc_jwt_claims_from_json(grpc_exec_ctx *exec_ctx,
                                            grpc_json *json, grpc_slice buffer) {
   grpc_json *cur;
-  grpc_jwt_claims *claims = gpr_malloc(sizeof(grpc_jwt_claims));
+  grpc_jwt_claims *claims =
+      (grpc_jwt_claims *)gpr_malloc(sizeof(grpc_jwt_claims));
   memset(claims, 0, sizeof(grpc_jwt_claims));
   claims->json = json;
   claims->buffer = buffer;
@@ -347,7 +351,7 @@
     const char *signed_jwt, size_t signed_jwt_len, void *user_data,
     grpc_jwt_verification_done_cb cb) {
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  verifier_cb_ctx *ctx = gpr_zalloc(sizeof(verifier_cb_ctx));
+  verifier_cb_ctx *ctx = (verifier_cb_ctx *)gpr_zalloc(sizeof(verifier_cb_ctx));
   ctx->verifier = verifier;
   ctx->pollent = grpc_polling_entity_create_from_pollset(pollset);
   ctx->header = header;
@@ -676,6 +680,7 @@
   grpc_json *json = json_from_http(response);
   grpc_httpcli_request req;
   const char *jwks_uri;
+  grpc_resource_quota *resource_quota = NULL;
 
   /* TODO(jboeuf): Cache the jwks_uri in order to avoid this hop next time. */
   if (json == NULL) goto error;
@@ -693,9 +698,9 @@
   jwks_uri += 8;
   req.handshaker = &grpc_httpcli_ssl;
   req.host = gpr_strdup(jwks_uri);
-  req.http.path = strchr(jwks_uri, '/');
+  req.http.path = (char *)strchr(jwks_uri, '/');
   if (req.http.path == NULL) {
-    req.http.path = "";
+    req.http.path = (char *)"";
   } else {
     *(req.host + (req.http.path - jwks_uri)) = '\0';
   }
@@ -703,8 +708,7 @@
   /* TODO(ctiller): Carry the resource_quota in ctx and share it with the host
      channel. This would allow us to cancel an authentication query when under
      extreme memory pressure. */
-  grpc_resource_quota *resource_quota =
-      grpc_resource_quota_create("jwt_verifier");
+  resource_quota = grpc_resource_quota_create("jwt_verifier");
   grpc_httpcli_get(
       exec_ctx, &ctx->verifier->http_ctx, &ctx->pollent, resource_quota, &req,
       gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), grpc_jwt_verifier_max_delay),
@@ -760,7 +764,8 @@
   if (dot == NULL || dot == email_domain) return email_domain;
   GPR_ASSERT(dot > email_domain);
   /* There may be a subdomain, we just want the domain. */
-  dot = gpr_memrchr(email_domain, '.', (size_t)(dot - email_domain));
+  dot = (const char *)gpr_memrchr((void *)email_domain, '.',
+                                  (size_t)(dot - email_domain));
   if (dot == NULL) return email_domain;
   return dot + 1;
 }
@@ -773,6 +778,7 @@
   char *path_prefix = NULL;
   const char *iss;
   grpc_httpcli_request req;
+  grpc_resource_quota *resource_quota = NULL;
   memset(&req, 0, sizeof(grpc_httpcli_request));
   req.handshaker = &grpc_httpcli_ssl;
   http_response_index rsp_idx;
@@ -831,8 +837,7 @@
   /* TODO(ctiller): Carry the resource_quota in ctx and share it with the host
      channel. This would allow us to cancel an authentication query when under
      extreme memory pressure. */
-  grpc_resource_quota *resource_quota =
-      grpc_resource_quota_create("jwt_verifier");
+  resource_quota = grpc_resource_quota_create("jwt_verifier");
   grpc_httpcli_get(
       exec_ctx, &ctx->verifier->http_ctx, &ctx->pollent, resource_quota, &req,
       gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), grpc_jwt_verifier_max_delay),
@@ -901,12 +906,14 @@
 grpc_jwt_verifier *grpc_jwt_verifier_create(
     const grpc_jwt_verifier_email_domain_key_url_mapping *mappings,
     size_t num_mappings) {
-  grpc_jwt_verifier *v = gpr_zalloc(sizeof(grpc_jwt_verifier));
+  grpc_jwt_verifier *v =
+      (grpc_jwt_verifier *)gpr_zalloc(sizeof(grpc_jwt_verifier));
   grpc_httpcli_context_init(&v->http_ctx);
 
   /* We know at least of one mapping. */
   v->allocated_mappings = 1 + num_mappings;
-  v->mappings = gpr_malloc(v->allocated_mappings * sizeof(email_key_mapping));
+  v->mappings = (email_key_mapping *)gpr_malloc(v->allocated_mappings *
+                                                sizeof(email_key_mapping));
   verifier_put_mapping(v, GRPC_GOOGLE_SERVICE_ACCOUNTS_EMAIL_DOMAIN,
                        GRPC_GOOGLE_SERVICE_ACCOUNTS_KEY_URL_PREFIX);
   /* User-Provided mappings. */
diff --git a/src/core/lib/security/credentials/jwt/jwt_verifier.h b/src/core/lib/security/credentials/jwt/jwt_verifier.h
index 8fac452..0603811 100644
--- a/src/core/lib/security/credentials/jwt/jwt_verifier.h
+++ b/src/core/lib/security/credentials/jwt/jwt_verifier.h
@@ -32,6 +32,10 @@
 #define GRPC_GOOGLE_SERVICE_ACCOUNTS_KEY_URL_PREFIX \
   "www.googleapis.com/robot/v1/metadata/x509"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* --- grpc_jwt_verifier_status. --- */
 
 typedef enum {
@@ -122,4 +126,8 @@
                                                const char *audience);
 const char *grpc_jwt_issuer_email_domain(const char *issuer);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_JWT_JWT_VERIFIER_H */
diff --git a/src/core/lib/security/credentials/oauth2/oauth2_credentials.c b/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc
similarity index 95%
rename from src/core/lib/security/credentials/oauth2/oauth2_credentials.c
rename to src/core/lib/security/credentials/oauth2/oauth2_credentials.cc
index 10b270c..0a801be 100644
--- a/src/core/lib/security/credentials/oauth2/oauth2_credentials.c
+++ b/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc
@@ -130,7 +130,7 @@
   }
 
   if (response->body_length > 0) {
-    null_terminated_body = gpr_malloc(response->body_length + 1);
+    null_terminated_body = (char *)gpr_malloc(response->body_length + 1);
     null_terminated_body[response->body_length] = '\0';
     memcpy(null_terminated_body, response->body, response->body_length);
   }
@@ -359,11 +359,11 @@
     grpc_exec_ctx *exec_ctx, grpc_credentials_metadata_request *metadata_req,
     grpc_httpcli_context *httpcli_context, grpc_polling_entity *pollent,
     grpc_iomgr_cb_func response_cb, gpr_timespec deadline) {
-  grpc_http_header header = {"Metadata-Flavor", "Google"};
+  grpc_http_header header = {(char *)"Metadata-Flavor", (char *)"Google"};
   grpc_httpcli_request request;
   memset(&request, 0, sizeof(grpc_httpcli_request));
-  request.host = GRPC_COMPUTE_ENGINE_METADATA_HOST;
-  request.http.path = GRPC_COMPUTE_ENGINE_METADATA_TOKEN_PATH;
+  request.host = (char *)GRPC_COMPUTE_ENGINE_METADATA_HOST;
+  request.http.path = (char *)GRPC_COMPUTE_ENGINE_METADATA_TOKEN_PATH;
   request.http.hdr_count = 1;
   request.http.hdrs = &header;
   /* TODO(ctiller): Carry the resource_quota in ctx and share it with the host
@@ -381,7 +381,8 @@
 grpc_call_credentials *grpc_google_compute_engine_credentials_create(
     void *reserved) {
   grpc_oauth2_token_fetcher_credentials *c =
-      gpr_malloc(sizeof(grpc_oauth2_token_fetcher_credentials));
+      (grpc_oauth2_token_fetcher_credentials *)gpr_malloc(
+          sizeof(grpc_oauth2_token_fetcher_credentials));
   GRPC_API_TRACE("grpc_compute_engine_credentials_create(reserved=%p)", 1,
                  (reserved));
   GPR_ASSERT(reserved == NULL);
@@ -412,16 +413,16 @@
     grpc_iomgr_cb_func response_cb, gpr_timespec deadline) {
   grpc_google_refresh_token_credentials *c =
       (grpc_google_refresh_token_credentials *)metadata_req->creds;
-  grpc_http_header header = {"Content-Type",
-                             "application/x-www-form-urlencoded"};
+  grpc_http_header header = {(char *)"Content-Type",
+                             (char *)"application/x-www-form-urlencoded"};
   grpc_httpcli_request request;
   char *body = NULL;
   gpr_asprintf(&body, GRPC_REFRESH_TOKEN_POST_BODY_FORMAT_STRING,
                c->refresh_token.client_id, c->refresh_token.client_secret,
                c->refresh_token.refresh_token);
   memset(&request, 0, sizeof(grpc_httpcli_request));
-  request.host = GRPC_GOOGLE_OAUTH2_SERVICE_HOST;
-  request.http.path = GRPC_GOOGLE_OAUTH2_SERVICE_TOKEN_PATH;
+  request.host = (char *)GRPC_GOOGLE_OAUTH2_SERVICE_HOST;
+  request.http.path = (char *)GRPC_GOOGLE_OAUTH2_SERVICE_TOKEN_PATH;
   request.http.hdr_count = 1;
   request.http.hdrs = &header;
   request.handshaker = &grpc_httpcli_ssl;
@@ -447,7 +448,8 @@
     gpr_log(GPR_ERROR, "Invalid input for refresh token credentials creation");
     return NULL;
   }
-  c = gpr_zalloc(sizeof(grpc_google_refresh_token_credentials));
+  c = (grpc_google_refresh_token_credentials *)gpr_zalloc(
+      sizeof(grpc_google_refresh_token_credentials));
   init_oauth2_token_fetcher(&c->base, refresh_token_fetch_oauth2);
   c->base.base.vtable = &refresh_token_vtable;
   c->refresh_token = refresh_token;
@@ -515,7 +517,8 @@
 grpc_call_credentials *grpc_access_token_credentials_create(
     const char *access_token, void *reserved) {
   grpc_access_token_credentials *c =
-      gpr_zalloc(sizeof(grpc_access_token_credentials));
+      (grpc_access_token_credentials *)gpr_zalloc(
+          sizeof(grpc_access_token_credentials));
   GRPC_API_TRACE(
       "grpc_access_token_credentials_create(access_token=<redacted>, "
       "reserved=%p)",
diff --git a/src/core/lib/security/credentials/oauth2/oauth2_credentials.h b/src/core/lib/security/credentials/oauth2/oauth2_credentials.h
index d9ad669..c8a9333 100644
--- a/src/core/lib/security/credentials/oauth2/oauth2_credentials.h
+++ b/src/core/lib/security/credentials/oauth2/oauth2_credentials.h
@@ -22,6 +22,10 @@
 #include "src/core/lib/json/json.h"
 #include "src/core/lib/security/credentials/credentials.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 // auth_refresh_token parsing.
 typedef struct {
   const char *type;
@@ -102,4 +106,8 @@
     grpc_exec_ctx *exec_ctx, const struct grpc_http_response *response,
     grpc_mdelem *token_md, gpr_timespec *token_lifetime);
 
-#endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_OAUTH2_OAUTH2_CREDENTIALS_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_OAUTH2_OAUTH2_CREDENTIALS_H */
\ No newline at end of file
diff --git a/src/core/lib/security/credentials/plugin/plugin_credentials.c b/src/core/lib/security/credentials/plugin/plugin_credentials.cc
similarity index 98%
rename from src/core/lib/security/credentials/plugin/plugin_credentials.c
rename to src/core/lib/security/credentials/plugin/plugin_credentials.cc
index ee20241..8106a73 100644
--- a/src/core/lib/security/credentials/plugin/plugin_credentials.c
+++ b/src/core/lib/security/credentials/plugin/plugin_credentials.cc
@@ -258,7 +258,8 @@
 
 grpc_call_credentials *grpc_metadata_credentials_create_from_plugin(
     grpc_metadata_credentials_plugin plugin, void *reserved) {
-  grpc_plugin_credentials *c = gpr_zalloc(sizeof(*c));
+  grpc_plugin_credentials *c =
+      (grpc_plugin_credentials *)gpr_zalloc(sizeof(*c));
   GRPC_API_TRACE("grpc_metadata_credentials_create_from_plugin(reserved=%p)", 1,
                  (reserved));
   GPR_ASSERT(reserved == NULL);
diff --git a/src/core/lib/security/credentials/ssl/ssl_credentials.c b/src/core/lib/security/credentials/ssl/ssl_credentials.cc
similarity index 93%
rename from src/core/lib/security/credentials/ssl/ssl_credentials.c
rename to src/core/lib/security/credentials/ssl/ssl_credentials.cc
index 006db1e..9df69a2 100644
--- a/src/core/lib/security/credentials/ssl/ssl_credentials.c
+++ b/src/core/lib/security/credentials/ssl/ssl_credentials.cc
@@ -66,8 +66,8 @@
   if (status != GRPC_SECURITY_OK) {
     return status;
   }
-  grpc_arg new_arg =
-      grpc_channel_arg_string_create(GRPC_ARG_HTTP2_SCHEME, "https");
+  grpc_arg new_arg = grpc_channel_arg_string_create(
+      (char *)GRPC_ARG_HTTP2_SCHEME, (char *)"https");
   *new_args = grpc_channel_args_copy_and_add(args, &new_arg, 1);
   return status;
 }
@@ -94,7 +94,8 @@
 grpc_channel_credentials *grpc_ssl_credentials_create(
     const char *pem_root_certs, grpc_ssl_pem_key_cert_pair *pem_key_cert_pair,
     void *reserved) {
-  grpc_ssl_credentials *c = gpr_zalloc(sizeof(grpc_ssl_credentials));
+  grpc_ssl_credentials *c =
+      (grpc_ssl_credentials *)gpr_zalloc(sizeof(grpc_ssl_credentials));
   GRPC_API_TRACE(
       "grpc_ssl_credentials_create(pem_root_certs=%s, "
       "pem_key_cert_pair=%p, "
@@ -145,8 +146,8 @@
   }
   if (num_key_cert_pairs > 0) {
     GPR_ASSERT(pem_key_cert_pairs != NULL);
-    config->pem_key_cert_pairs =
-        gpr_zalloc(num_key_cert_pairs * sizeof(tsi_ssl_pem_key_cert_pair));
+    config->pem_key_cert_pairs = (tsi_ssl_pem_key_cert_pair *)gpr_zalloc(
+        num_key_cert_pairs * sizeof(tsi_ssl_pem_key_cert_pair));
   }
   config->num_key_cert_pairs = num_key_cert_pairs;
   for (i = 0; i < num_key_cert_pairs; i++) {
@@ -175,8 +176,8 @@
     size_t num_key_cert_pairs,
     grpc_ssl_client_certificate_request_type client_certificate_request,
     void *reserved) {
-  grpc_ssl_server_credentials *c =
-      gpr_zalloc(sizeof(grpc_ssl_server_credentials));
+  grpc_ssl_server_credentials *c = (grpc_ssl_server_credentials *)gpr_zalloc(
+      sizeof(grpc_ssl_server_credentials));
   GRPC_API_TRACE(
       "grpc_ssl_server_credentials_create_ex("
       "pem_root_certs=%s, pem_key_cert_pairs=%p, num_key_cert_pairs=%lu, "
diff --git a/src/core/lib/security/transport/auth_filters.h b/src/core/lib/security/transport/auth_filters.h
index bd5902a..ba5df7f 100644
--- a/src/core/lib/security/transport/auth_filters.h
+++ b/src/core/lib/security/transport/auth_filters.h
@@ -21,7 +21,15 @@
 
 #include "src/core/lib/channel/channel_stack.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 extern const grpc_channel_filter grpc_client_auth_filter;
 extern const grpc_channel_filter grpc_server_auth_filter;
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_SECURITY_TRANSPORT_AUTH_FILTERS_H */
diff --git a/src/core/lib/security/transport/client_auth_filter.c b/src/core/lib/security/transport/client_auth_filter.cc
similarity index 94%
rename from src/core/lib/security/transport/client_auth_filter.c
rename to src/core/lib/security/transport/client_auth_filter.cc
index dd7dd44..a8464db 100644
--- a/src/core/lib/security/transport/client_auth_filter.c
+++ b/src/core/lib/security/transport/client_auth_filter.cc
@@ -93,8 +93,9 @@
 static void on_credentials_metadata(grpc_exec_ctx *exec_ctx, void *arg,
                                     grpc_error *input_error) {
   grpc_transport_stream_op_batch *batch = (grpc_transport_stream_op_batch *)arg;
-  grpc_call_element *elem = batch->handler_private.extra_arg;
-  call_data *calld = elem->call_data;
+  grpc_call_element *elem =
+      (grpc_call_element *)batch->handler_private.extra_arg;
+  call_data *calld = (call_data *)elem->call_data;
   reset_auth_metadata_context(&calld->auth_md_context);
   grpc_error *error = GRPC_ERROR_REF(input_error);
   if (error == GRPC_ERROR_NONE) {
@@ -163,8 +164,8 @@
 static void send_security_metadata(grpc_exec_ctx *exec_ctx,
                                    grpc_call_element *elem,
                                    grpc_transport_stream_op_batch *batch) {
-  call_data *calld = elem->call_data;
-  channel_data *chand = elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
   grpc_client_security_context *ctx =
       (grpc_client_security_context *)batch->payload
           ->context[GRPC_CONTEXT_SECURITY]
@@ -225,8 +226,9 @@
 static void on_host_checked(grpc_exec_ctx *exec_ctx, void *arg,
                             grpc_error *error) {
   grpc_transport_stream_op_batch *batch = (grpc_transport_stream_op_batch *)arg;
-  grpc_call_element *elem = batch->handler_private.extra_arg;
-  call_data *calld = elem->call_data;
+  grpc_call_element *elem =
+      (grpc_call_element *)batch->handler_private.extra_arg;
+  call_data *calld = (call_data *)elem->call_data;
   if (error == GRPC_ERROR_NONE) {
     send_security_metadata(exec_ctx, elem, batch);
   } else {
@@ -264,8 +266,8 @@
   GPR_TIMER_BEGIN("auth_start_transport_stream_op_batch", 0);
 
   /* grab pointers to our data from the call element */
-  call_data *calld = elem->call_data;
-  channel_data *chand = elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
 
   if (!batch->cancel_stream) {
     GPR_ASSERT(batch->payload->context != NULL);
@@ -276,7 +278,9 @@
           grpc_client_security_context_destroy;
     }
     grpc_client_security_context *sec_ctx =
-        batch->payload->context[GRPC_CONTEXT_SECURITY].value;
+        (grpc_client_security_context *)batch->payload
+            ->context[GRPC_CONTEXT_SECURITY]
+            .value;
     GRPC_AUTH_CONTEXT_UNREF(sec_ctx->auth_context, "client auth filter");
     sec_ctx->auth_context =
         GRPC_AUTH_CONTEXT_REF(chand->auth_context, "client_auth_filter");
@@ -339,7 +343,7 @@
 static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
                                   grpc_call_element *elem,
                                   const grpc_call_element_args *args) {
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
   calld->owning_call = args->call_stack;
   calld->call_combiner = args->call_combiner;
   return GRPC_ERROR_NONE;
@@ -348,7 +352,7 @@
 static void set_pollset_or_pollset_set(grpc_exec_ctx *exec_ctx,
                                        grpc_call_element *elem,
                                        grpc_polling_entity *pollent) {
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
   calld->pollent = pollent;
 }
 
@@ -356,7 +360,7 @@
 static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
                               const grpc_call_final_info *final_info,
                               grpc_closure *ignored) {
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
   grpc_credentials_mdelem_array_destroy(exec_ctx, &calld->md_array);
   grpc_call_credentials_unref(exec_ctx, calld->creds);
   if (calld->have_host) {
@@ -386,7 +390,7 @@
   }
 
   /* grab pointers to our data from the channel element */
-  channel_data *chand = elem->channel_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
 
   /* The first and the last filters tend to be implemented differently to
      handle the case that there's no 'next' filter to call on the up or down
@@ -406,7 +410,7 @@
 static void destroy_channel_elem(grpc_exec_ctx *exec_ctx,
                                  grpc_channel_element *elem) {
   /* grab pointers to our data from the channel element */
-  channel_data *chand = elem->channel_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
   grpc_channel_security_connector *sc = chand->security_connector;
   if (sc != NULL) {
     GRPC_SECURITY_CONNECTOR_UNREF(exec_ctx, &sc->base, "client_auth_filter");
diff --git a/src/core/lib/security/transport/lb_targets_info.c b/src/core/lib/security/transport/lb_targets_info.cc
similarity index 78%
rename from src/core/lib/security/transport/lb_targets_info.c
rename to src/core/lib/security/transport/lb_targets_info.cc
index 5583a4e..947fc1a 100644
--- a/src/core/lib/security/transport/lb_targets_info.c
+++ b/src/core/lib/security/transport/lb_targets_info.cc
@@ -25,19 +25,22 @@
  * secure naming purposes. */
 #define GRPC_ARG_LB_SECURE_NAMING_MAP "grpc.lb_secure_naming_map"
 
-static void *targets_info_copy(void *p) { return grpc_slice_hash_table_ref(p); }
+static void *targets_info_copy(void *p) {
+  return grpc_slice_hash_table_ref((grpc_slice_hash_table *)p);
+}
 static void targets_info_destroy(grpc_exec_ctx *exec_ctx, void *p) {
-  grpc_slice_hash_table_unref(exec_ctx, p);
+  grpc_slice_hash_table_unref(exec_ctx, (grpc_slice_hash_table *)p);
 }
 static int targets_info_cmp(void *a, void *b) {
-  return grpc_slice_hash_table_cmp(a, b);
+  return grpc_slice_hash_table_cmp((const grpc_slice_hash_table *)a,
+                                   (const grpc_slice_hash_table *)b);
 }
 static const grpc_arg_pointer_vtable server_to_balancer_names_vtable = {
     targets_info_copy, targets_info_destroy, targets_info_cmp};
 
 grpc_arg grpc_lb_targets_info_create_channel_arg(
     grpc_slice_hash_table *targets_info) {
-  return grpc_channel_arg_pointer_create(GRPC_ARG_LB_SECURE_NAMING_MAP,
+  return grpc_channel_arg_pointer_create((char *)GRPC_ARG_LB_SECURE_NAMING_MAP,
                                          targets_info,
                                          &server_to_balancer_names_vtable);
 }
@@ -48,7 +51,7 @@
       grpc_channel_args_find(args, GRPC_ARG_LB_SECURE_NAMING_MAP);
   if (targets_info_arg != NULL) {
     GPR_ASSERT(targets_info_arg->type == GRPC_ARG_POINTER);
-    return targets_info_arg->value.pointer.p;
+    return (grpc_slice_hash_table *)targets_info_arg->value.pointer.p;
   }
   return NULL;
 }
diff --git a/src/core/lib/security/transport/lb_targets_info.h b/src/core/lib/security/transport/lb_targets_info.h
index c3d685d..705d33b 100644
--- a/src/core/lib/security/transport/lb_targets_info.h
+++ b/src/core/lib/security/transport/lb_targets_info.h
@@ -21,6 +21,10 @@
 
 #include "src/core/lib/slice/slice_hash_table.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /** Return a channel argument containing \a targets_info. */
 grpc_arg grpc_lb_targets_info_create_channel_arg(
     grpc_slice_hash_table *targets_info);
@@ -29,4 +33,8 @@
 grpc_slice_hash_table *grpc_lb_targets_info_find_in_args(
     const grpc_channel_args *args);
 
-#endif /* GRPC_CORE_LIB_SECURITY_TRANSPORT_LB_TARGETS_INFO_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_SECURITY_TRANSPORT_LB_TARGETS_INFO_H */
\ No newline at end of file
diff --git a/src/core/lib/security/transport/secure_endpoint.c b/src/core/lib/security/transport/secure_endpoint.cc
similarity index 100%
rename from src/core/lib/security/transport/secure_endpoint.c
rename to src/core/lib/security/transport/secure_endpoint.cc
diff --git a/src/core/lib/security/transport/secure_endpoint.h b/src/core/lib/security/transport/secure_endpoint.h
index 3323a6f..832cc1c 100644
--- a/src/core/lib/security/transport/secure_endpoint.h
+++ b/src/core/lib/security/transport/secure_endpoint.h
@@ -22,6 +22,10 @@
 #include <grpc/slice.h>
 #include "src/core/lib/iomgr/endpoint.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 struct tsi_frame_protector;
 struct tsi_zero_copy_grpc_protector;
 
@@ -36,4 +40,8 @@
     grpc_endpoint *to_wrap, grpc_slice *leftover_slices,
     size_t leftover_nslices);
 
-#endif /* GRPC_CORE_LIB_SECURITY_TRANSPORT_SECURE_ENDPOINT_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_SECURITY_TRANSPORT_SECURE_ENDPOINT_H */
\ No newline at end of file
diff --git a/src/core/lib/security/transport/security_connector.c b/src/core/lib/security/transport/security_connector.cc
similarity index 95%
rename from src/core/lib/security/transport/security_connector.c
rename to src/core/lib/security/transport/security_connector.cc
index 2a9e939..51844fb 100644
--- a/src/core/lib/security/transport/security_connector.c
+++ b/src/core/lib/security/transport/security_connector.cc
@@ -200,11 +200,13 @@
 }
 
 static void connector_pointer_arg_destroy(grpc_exec_ctx *exec_ctx, void *p) {
-  GRPC_SECURITY_CONNECTOR_UNREF(exec_ctx, p, "connector_pointer_arg_destroy");
+  GRPC_SECURITY_CONNECTOR_UNREF(exec_ctx, (grpc_security_connector *)p,
+                                "connector_pointer_arg_destroy");
 }
 
 static void *connector_pointer_arg_copy(void *p) {
-  return GRPC_SECURITY_CONNECTOR_REF(p, "connector_pointer_arg_copy");
+  return GRPC_SECURITY_CONNECTOR_REF((grpc_security_connector *)p,
+                                     "connector_pointer_arg_copy");
 }
 
 static int connector_pointer_cmp(void *a, void *b) { return GPR_ICMP(a, b); }
@@ -214,8 +216,8 @@
     connector_pointer_cmp};
 
 grpc_arg grpc_security_connector_to_arg(grpc_security_connector *sc) {
-  return grpc_channel_arg_pointer_create(GRPC_ARG_SECURITY_CONNECTOR, sc,
-                                         &connector_pointer_vtable);
+  return grpc_channel_arg_pointer_create((char *)GRPC_ARG_SECURITY_CONNECTOR,
+                                         sc, &connector_pointer_vtable);
 }
 
 grpc_security_connector *grpc_security_connector_from_arg(const grpc_arg *arg) {
@@ -225,7 +227,7 @@
             GRPC_ARG_SECURITY_CONNECTOR);
     return NULL;
   }
-  return arg->value.pointer.p;
+  return (grpc_security_connector *)arg->value.pointer.p;
 }
 
 grpc_security_connector *grpc_security_connector_find_in_args(
@@ -424,7 +426,8 @@
 grpc_channel_security_connector *grpc_fake_channel_security_connector_create(
     grpc_call_credentials *request_metadata_creds, const char *target,
     const grpc_channel_args *args) {
-  grpc_fake_channel_security_connector *c = gpr_zalloc(sizeof(*c));
+  grpc_fake_channel_security_connector *c =
+      (grpc_fake_channel_security_connector *)gpr_zalloc(sizeof(*c));
   gpr_ref_init(&c->base.base.refcount, 1);
   c->base.base.url_scheme = GRPC_FAKE_SECURITY_URL_SCHEME;
   c->base.base.vtable = &fake_channel_vtable;
@@ -443,7 +446,8 @@
 grpc_server_security_connector *grpc_fake_server_security_connector_create(
     void) {
   grpc_server_security_connector *c =
-      gpr_zalloc(sizeof(grpc_server_security_connector));
+      (grpc_server_security_connector *)gpr_zalloc(
+          sizeof(grpc_server_security_connector));
   gpr_ref_init(&c->base.refcount, 1);
   c->base.vtable = &fake_server_vtable;
   c->base.url_scheme = GRPC_FAKE_SECURITY_URL_SCHEME;
@@ -658,7 +662,8 @@
   while (grpc_auth_property_iterator_next(&it) != NULL) max_num_props++;
 
   if (max_num_props > 0) {
-    peer.properties = gpr_malloc(max_num_props * sizeof(tsi_peer_property));
+    peer.properties = (tsi_peer_property *)gpr_malloc(
+        max_num_props * sizeof(tsi_peer_property));
     it = grpc_auth_context_property_iterator(auth_context);
     while ((prop = grpc_auth_property_iterator_next(&it)) != NULL) {
       if (strcmp(prop->name, GRPC_X509_SAN_PROPERTY_NAME) == 0) {
@@ -804,13 +809,13 @@
     const char *overridden_target_name, grpc_channel_security_connector **sc) {
   size_t num_alpn_protocols = grpc_chttp2_num_alpn_versions();
   const char **alpn_protocol_strings =
-      gpr_malloc(sizeof(const char *) * num_alpn_protocols);
+      (const char **)gpr_malloc(sizeof(const char *) * num_alpn_protocols);
   tsi_result result = TSI_OK;
   grpc_ssl_channel_security_connector *c;
   size_t i;
   const char *pem_root_certs;
   char *port;
-
+  bool has_key_cert_pair;
   for (i = 0; i < num_alpn_protocols; i++) {
     alpn_protocol_strings[i] = grpc_chttp2_get_alpn_version_index(i);
   }
@@ -829,7 +834,8 @@
     pem_root_certs = config->pem_root_certs;
   }
 
-  c = gpr_zalloc(sizeof(grpc_ssl_channel_security_connector));
+  c = (grpc_ssl_channel_security_connector *)gpr_zalloc(
+      sizeof(grpc_ssl_channel_security_connector));
 
   gpr_ref_init(&c->base.base.refcount, 1);
   c->base.base.vtable = &ssl_channel_vtable;
@@ -845,8 +851,8 @@
     c->overridden_target_name = gpr_strdup(overridden_target_name);
   }
 
-  bool has_key_cert_pair = config->pem_key_cert_pair.private_key != NULL &&
-                           config->pem_key_cert_pair.cert_chain != NULL;
+  has_key_cert_pair = config->pem_key_cert_pair.private_key != NULL &&
+                      config->pem_key_cert_pair.cert_chain != NULL;
   result = tsi_create_ssl_client_handshaker_factory(
       has_key_cert_pair ? &config->pem_key_cert_pair : NULL, pem_root_certs,
       ssl_cipher_suites(), alpn_protocol_strings, (uint16_t)num_alpn_protocols,
@@ -872,7 +878,7 @@
     grpc_server_security_connector **sc) {
   size_t num_alpn_protocols = grpc_chttp2_num_alpn_versions();
   const char **alpn_protocol_strings =
-      gpr_malloc(sizeof(const char *) * num_alpn_protocols);
+      (const char **)gpr_malloc(sizeof(const char *) * num_alpn_protocols);
   tsi_result result = TSI_OK;
   grpc_ssl_server_security_connector *c;
   size_t i;
@@ -885,7 +891,8 @@
     gpr_log(GPR_ERROR, "An SSL server needs a key and a cert.");
     goto error;
   }
-  c = gpr_zalloc(sizeof(grpc_ssl_server_security_connector));
+  c = (grpc_ssl_server_security_connector *)gpr_zalloc(
+      sizeof(grpc_ssl_server_security_connector));
 
   gpr_ref_init(&c->base.base.refcount, 1);
   c->base.base.url_scheme = GRPC_SSL_URL_SCHEME;
diff --git a/src/core/lib/security/transport/security_connector.h b/src/core/lib/security/transport/security_connector.h
index 4f9b63a..4d87cd0 100644
--- a/src/core/lib/security/transport/security_connector.h
+++ b/src/core/lib/security/transport/security_connector.h
@@ -29,6 +29,10 @@
 #include "src/core/tsi/ssl_transport_security.h"
 #include "src/core/tsi/transport_security_interface.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #ifndef NDEBUG
 extern grpc_tracer_flag grpc_trace_security_connector_refcount;
 #endif
@@ -245,4 +249,8 @@
     const grpc_auth_context *auth_context);
 void tsi_shallow_peer_destruct(tsi_peer *peer);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_SECURITY_TRANSPORT_SECURITY_CONNECTOR_H */
diff --git a/src/core/lib/security/transport/security_handshaker.c b/src/core/lib/security/transport/security_handshaker.cc
similarity index 100%
rename from src/core/lib/security/transport/security_handshaker.c
rename to src/core/lib/security/transport/security_handshaker.cc
diff --git a/src/core/lib/security/transport/security_handshaker.h b/src/core/lib/security/transport/security_handshaker.h
index 95bf127..345065f 100644
--- a/src/core/lib/security/transport/security_handshaker.h
+++ b/src/core/lib/security/transport/security_handshaker.h
@@ -23,6 +23,10 @@
 #include "src/core/lib/iomgr/exec_ctx.h"
 #include "src/core/lib/security/transport/security_connector.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /// Creates a security handshaker using \a handshaker.
 grpc_handshaker *grpc_security_handshaker_create(
     grpc_exec_ctx *exec_ctx, tsi_handshaker *handshaker,
@@ -31,4 +35,8 @@
 /// Registers security handshaker factories.
 void grpc_security_register_handshaker_factories();
 
-#endif /* GRPC_CORE_LIB_SECURITY_TRANSPORT_SECURITY_HANDSHAKER_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_SECURITY_TRANSPORT_SECURITY_HANDSHAKER_H */
\ No newline at end of file
diff --git a/src/core/lib/security/transport/server_auth_filter.c b/src/core/lib/security/transport/server_auth_filter.cc
similarity index 92%
rename from src/core/lib/security/transport/server_auth_filter.c
rename to src/core/lib/security/transport/server_auth_filter.cc
index 7f523c0..f5e02f4 100644
--- a/src/core/lib/security/transport/server_auth_filter.c
+++ b/src/core/lib/security/transport/server_auth_filter.cc
@@ -63,8 +63,8 @@
     grpc_slice value = GRPC_MDVALUE(md);
     if (result.count == result.capacity) {
       result.capacity = GPR_MAX(result.capacity + 8, result.capacity * 2);
-      result.metadata =
-          gpr_realloc(result.metadata, result.capacity * sizeof(grpc_metadata));
+      result.metadata = (grpc_metadata *)gpr_realloc(
+          result.metadata, result.capacity * sizeof(grpc_metadata));
     }
     usr_md = &result.metadata[result.count++];
     usr_md->key = grpc_slice_ref_internal(key);
@@ -76,8 +76,8 @@
 static grpc_filtered_mdelem remove_consumed_md(grpc_exec_ctx *exec_ctx,
                                                void *user_data,
                                                grpc_mdelem md) {
-  grpc_call_element *elem = user_data;
-  call_data *calld = elem->call_data;
+  grpc_call_element *elem = (grpc_call_element *)user_data;
+  call_data *calld = (call_data *)elem->call_data;
   size_t i;
   for (i = 0; i < calld->num_consumed_md; i++) {
     const grpc_metadata *consumed_md = &calld->consumed_md[i];
@@ -95,7 +95,7 @@
                                         const grpc_metadata *response_md,
                                         size_t num_response_md,
                                         grpc_error *error) {
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
   grpc_transport_stream_op_batch *batch = calld->recv_initial_metadata_batch;
   /* TODO(jboeuf): Implement support for response_md. */
   if (response_md != NULL && num_response_md > 0) {
@@ -119,8 +119,8 @@
     void *user_data, const grpc_metadata *consumed_md, size_t num_consumed_md,
     const grpc_metadata *response_md, size_t num_response_md,
     grpc_status_code status, const char *error_details) {
-  grpc_call_element *elem = user_data;
-  call_data *calld = elem->call_data;
+  grpc_call_element *elem = (grpc_call_element *)user_data;
+  call_data *calld = (call_data *)elem->call_data;
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
   // If the call was not cancelled while we were in flight, process the result.
   if (gpr_atm_full_cas(&calld->state, (gpr_atm)STATE_INIT,
@@ -149,7 +149,7 @@
 
 static void cancel_call(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
   grpc_call_element *elem = (grpc_call_element *)arg;
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
   // If the result was not already processed, invoke the callback now.
   if (error != GRPC_ERROR_NONE &&
       gpr_atm_full_cas(&calld->state, (gpr_atm)STATE_INIT,
@@ -163,8 +163,8 @@
 static void recv_initial_metadata_ready(grpc_exec_ctx *exec_ctx, void *arg,
                                         grpc_error *error) {
   grpc_call_element *elem = (grpc_call_element *)arg;
-  channel_data *chand = elem->channel_data;
-  call_data *calld = elem->call_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
   grpc_transport_stream_op_batch *batch = calld->recv_initial_metadata_batch;
   if (error == GRPC_ERROR_NONE) {
     if (chand->creds != NULL && chand->creds->processor.process != NULL) {
@@ -191,7 +191,7 @@
 static void auth_start_transport_stream_op_batch(
     grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
     grpc_transport_stream_op_batch *batch) {
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
   if (batch->recv_initial_metadata) {
     // Inject our callback.
     calld->recv_initial_metadata_batch = batch;
@@ -207,8 +207,8 @@
 static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
                                   grpc_call_element *elem,
                                   const grpc_call_element_args *args) {
-  call_data *calld = elem->call_data;
-  channel_data *chand = elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
   calld->call_combiner = args->call_combiner;
   calld->owning_call = args->call_stack;
   GRPC_CLOSURE_INIT(&calld->recv_initial_metadata_ready,
@@ -240,7 +240,7 @@
                                      grpc_channel_element *elem,
                                      grpc_channel_element_args *args) {
   GPR_ASSERT(!args->is_last);
-  channel_data *chand = elem->channel_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
   grpc_auth_context *auth_context =
       grpc_find_auth_context_in_args(args->channel_args);
   GPR_ASSERT(auth_context != NULL);
@@ -255,7 +255,7 @@
 /* Destructor for channel data */
 static void destroy_channel_elem(grpc_exec_ctx *exec_ctx,
                                  grpc_channel_element *elem) {
-  channel_data *chand = elem->channel_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
   GRPC_AUTH_CONTEXT_UNREF(chand->auth_context, "server_auth_filter");
   grpc_server_credentials_unref(exec_ctx, chand->creds);
 }
diff --git a/src/core/lib/security/transport/tsi_error.c b/src/core/lib/security/transport/tsi_error.cc
similarity index 100%
rename from src/core/lib/security/transport/tsi_error.c
rename to src/core/lib/security/transport/tsi_error.cc
diff --git a/src/core/lib/security/transport/tsi_error.h b/src/core/lib/security/transport/tsi_error.h
index 87a63a8..4c78b06 100644
--- a/src/core/lib/security/transport/tsi_error.h
+++ b/src/core/lib/security/transport/tsi_error.h
@@ -22,6 +22,14 @@
 #include "src/core/lib/iomgr/error.h"
 #include "src/core/tsi/transport_security_interface.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 grpc_error *grpc_set_tsi_error_result(grpc_error *error, tsi_result result);
 
-#endif /* GRPC_CORE_LIB_SECURITY_TRANSPORT_TSI_ERROR_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_SECURITY_TRANSPORT_TSI_ERROR_H */
\ No newline at end of file
diff --git a/src/core/lib/security/util/json_util.c b/src/core/lib/security/util/json_util.cc
similarity index 100%
rename from src/core/lib/security/util/json_util.c
rename to src/core/lib/security/util/json_util.cc
diff --git a/src/core/lib/security/util/json_util.h b/src/core/lib/security/util/json_util.h
index 5ea831e..43a2f6b 100644
--- a/src/core/lib/security/util/json_util.h
+++ b/src/core/lib/security/util/json_util.h
@@ -28,6 +28,10 @@
 #define GRPC_AUTH_JSON_TYPE_SERVICE_ACCOUNT "service_account"
 #define GRPC_AUTH_JSON_TYPE_AUTHORIZED_USER "authorized_user"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 // Gets a child property from a json node.
 const char *grpc_json_get_string_property(const grpc_json *json,
                                           const char *prop_name);
@@ -37,4 +41,8 @@
 bool grpc_copy_json_string_property(const grpc_json *json,
                                     const char *prop_name, char **copied_value);
 
-#endif /* GRPC_CORE_LIB_SECURITY_UTIL_JSON_UTIL_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_SECURITY_UTIL_JSON_UTIL_H */
\ No newline at end of file
diff --git a/src/core/lib/slice/b64.c b/src/core/lib/slice/b64.cc
similarity index 100%
rename from src/core/lib/slice/b64.c
rename to src/core/lib/slice/b64.cc
diff --git a/src/core/lib/slice/b64.h b/src/core/lib/slice/b64.h
index 3fd15fe..c01da56 100644
--- a/src/core/lib/slice/b64.h
+++ b/src/core/lib/slice/b64.h
@@ -21,6 +21,10 @@
 
 #include <grpc/slice.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Encodes data using base64. It is the caller's responsability to free
    the returned char * using gpr_free. Returns NULL on NULL input.
    TODO(makdharma) : change the flags to bool from int */
@@ -47,4 +51,8 @@
 grpc_slice grpc_base64_decode_with_len(grpc_exec_ctx *exec_ctx, const char *b64,
                                        size_t b64_len, int url_safe);
 
-#endif /* GRPC_CORE_LIB_SLICE_B64_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_SLICE_B64_H */
\ No newline at end of file
diff --git a/src/core/lib/slice/percent_encoding.c b/src/core/lib/slice/percent_encoding.cc
similarity index 100%
rename from src/core/lib/slice/percent_encoding.c
rename to src/core/lib/slice/percent_encoding.cc
diff --git a/src/core/lib/slice/percent_encoding.h b/src/core/lib/slice/percent_encoding.h
index faae26a..e6f8512 100644
--- a/src/core/lib/slice/percent_encoding.h
+++ b/src/core/lib/slice/percent_encoding.h
@@ -30,6 +30,10 @@
 
 #include <grpc/slice.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* URL percent encoding spec bitfield (usabel as 'unreserved_bytes' in
    grpc_percent_encode_slice, grpc_strict_percent_decode_slice).
    Flags [A-Za-z0-9-_.~] as unreserved bytes for the percent encoding routines
@@ -60,4 +64,8 @@
    This cannot fail. */
 grpc_slice grpc_permissive_percent_decode_slice(grpc_slice slice_in);
 
-#endif /* GRPC_CORE_LIB_SLICE_PERCENT_ENCODING_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_SLICE_PERCENT_ENCODING_H */
\ No newline at end of file
diff --git a/src/core/lib/slice/slice.c b/src/core/lib/slice/slice.cc
similarity index 100%
rename from src/core/lib/slice/slice.c
rename to src/core/lib/slice/slice.cc
diff --git a/src/core/lib/slice/slice_buffer.c b/src/core/lib/slice/slice_buffer.cc
similarity index 100%
rename from src/core/lib/slice/slice_buffer.c
rename to src/core/lib/slice/slice_buffer.cc
diff --git a/src/core/lib/slice/slice_hash_table.c b/src/core/lib/slice/slice_hash_table.cc
similarity index 100%
rename from src/core/lib/slice/slice_hash_table.c
rename to src/core/lib/slice/slice_hash_table.cc
diff --git a/src/core/lib/slice/slice_hash_table.h b/src/core/lib/slice/slice_hash_table.h
index 339078f..3c3f0e6 100644
--- a/src/core/lib/slice/slice_hash_table.h
+++ b/src/core/lib/slice/slice_hash_table.h
@@ -19,6 +19,10 @@
 
 #include "src/core/lib/transport/metadata.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /** Hash table implementation.
  *
  * This implementation uses open addressing
@@ -67,4 +71,8 @@
 int grpc_slice_hash_table_cmp(const grpc_slice_hash_table *a,
                               const grpc_slice_hash_table *b);
 
-#endif /* GRPC_CORE_LIB_SLICE_SLICE_HASH_TABLE_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_SLICE_SLICE_HASH_TABLE_H */
\ No newline at end of file
diff --git a/src/core/lib/slice/slice_intern.c b/src/core/lib/slice/slice_intern.cc
similarity index 99%
rename from src/core/lib/slice/slice_intern.c
rename to src/core/lib/slice/slice_intern.cc
index ec71b3c..1ea9a2a 100644
--- a/src/core/lib/slice/slice_intern.c
+++ b/src/core/lib/slice/slice_intern.cc
@@ -18,6 +18,7 @@
 
 #include "src/core/lib/slice/slice_internal.h"
 
+#include <inttypes.h>
 #include <string.h>
 
 #include <grpc/support/alloc.h>
diff --git a/src/core/lib/slice/slice_internal.h b/src/core/lib/slice/slice_internal.h
index 6df0b4b..8591185 100644
--- a/src/core/lib/slice/slice_internal.h
+++ b/src/core/lib/slice/slice_internal.h
@@ -24,6 +24,10 @@
 
 #include "src/core/lib/iomgr/exec_ctx.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 grpc_slice grpc_slice_ref_internal(grpc_slice slice);
 void grpc_slice_unref_internal(grpc_exec_ctx *exec_ctx, grpc_slice slice);
 void grpc_slice_buffer_reset_and_unref_internal(grpc_exec_ctx *exec_ctx,
@@ -46,4 +50,8 @@
 uint32_t grpc_static_slice_hash(grpc_slice s);
 int grpc_static_slice_eq(grpc_slice a, grpc_slice b);
 
-#endif /* GRPC_CORE_LIB_SLICE_SLICE_INTERNAL_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_SLICE_SLICE_INTERNAL_H */
\ No newline at end of file
diff --git a/src/core/lib/slice/slice_string_helpers.c b/src/core/lib/slice/slice_string_helpers.cc
similarity index 100%
rename from src/core/lib/slice/slice_string_helpers.c
rename to src/core/lib/slice/slice_string_helpers.cc
diff --git a/src/core/lib/slice/slice_traits.h b/src/core/lib/slice/slice_traits.h
index 4b898bd..1eda17c 100644
--- a/src/core/lib/slice/slice_traits.h
+++ b/src/core/lib/slice/slice_traits.h
@@ -22,8 +22,16 @@
 #include <grpc/slice.h>
 #include <stdbool.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 bool grpc_slice_is_legal_header(grpc_slice s);
 bool grpc_slice_is_legal_nonbin_header(grpc_slice s);
 bool grpc_slice_is_bin_suffixed(grpc_slice s);
 
-#endif /* GRPC_CORE_LIB_SLICE_SLICE_TRAITS_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_SLICE_SLICE_TRAITS_H */
\ No newline at end of file
diff --git a/src/core/lib/support/alloc.c b/src/core/lib/support/alloc.cc
similarity index 100%
rename from src/core/lib/support/alloc.c
rename to src/core/lib/support/alloc.cc
diff --git a/src/core/lib/support/arena.c b/src/core/lib/support/arena.cc
similarity index 100%
rename from src/core/lib/support/arena.c
rename to src/core/lib/support/arena.cc
diff --git a/src/core/lib/support/arena.h b/src/core/lib/support/arena.h
index 47f0e4d..8a50786 100644
--- a/src/core/lib/support/arena.h
+++ b/src/core/lib/support/arena.h
@@ -27,6 +27,10 @@
 
 #include <stddef.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct gpr_arena gpr_arena;
 
 // Create an arena, with \a initial_size bytes in the first allocated buffer
@@ -36,4 +40,8 @@
 // Destroy an arena, returning the total number of bytes allocated
 size_t gpr_arena_destroy(gpr_arena *arena);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_SUPPORT_ARENA_H */
diff --git a/src/core/lib/support/atm.c b/src/core/lib/support/atm.cc
similarity index 100%
rename from src/core/lib/support/atm.c
rename to src/core/lib/support/atm.cc
diff --git a/src/core/lib/support/avl.c b/src/core/lib/support/avl.cc
similarity index 100%
rename from src/core/lib/support/avl.c
rename to src/core/lib/support/avl.cc
diff --git a/src/core/lib/support/backoff.c b/src/core/lib/support/backoff.cc
similarity index 100%
rename from src/core/lib/support/backoff.c
rename to src/core/lib/support/backoff.cc
diff --git a/src/core/lib/support/backoff.h b/src/core/lib/support/backoff.h
index 6e0cc3a..31ec28f 100644
--- a/src/core/lib/support/backoff.h
+++ b/src/core/lib/support/backoff.h
@@ -21,6 +21,10 @@
 
 #include <grpc/support/time.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct {
   /// const:  how long to wait after the first failure before retrying
   int64_t initial_connect_timeout;
@@ -53,4 +57,8 @@
 /// instead
 void gpr_backoff_reset(gpr_backoff *backoff);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_SUPPORT_BACKOFF_H */
diff --git a/src/core/lib/support/cmdline.c b/src/core/lib/support/cmdline.cc
similarity index 100%
rename from src/core/lib/support/cmdline.c
rename to src/core/lib/support/cmdline.cc
diff --git a/src/core/lib/support/cpu_iphone.c b/src/core/lib/support/cpu_iphone.cc
similarity index 97%
rename from src/core/lib/support/cpu_iphone.c
rename to src/core/lib/support/cpu_iphone.cc
index dfd69b9..2847e03 100644
--- a/src/core/lib/support/cpu_iphone.c
+++ b/src/core/lib/support/cpu_iphone.cc
@@ -18,6 +18,8 @@
 
 #include <grpc/support/port_platform.h>
 
+#include <grpc/support/cpu.h>
+
 #ifdef GPR_CPU_IPHONE
 
 /* Probably 2 instead of 1, but see comment on gpr_cpu_current_cpu. */
diff --git a/src/core/lib/support/cpu_linux.c b/src/core/lib/support/cpu_linux.cc
similarity index 100%
rename from src/core/lib/support/cpu_linux.c
rename to src/core/lib/support/cpu_linux.cc
diff --git a/src/core/lib/support/cpu_posix.c b/src/core/lib/support/cpu_posix.cc
similarity index 97%
rename from src/core/lib/support/cpu_posix.c
rename to src/core/lib/support/cpu_posix.cc
index a1ba820..503a96b 100644
--- a/src/core/lib/support/cpu_posix.c
+++ b/src/core/lib/support/cpu_posix.cc
@@ -24,6 +24,7 @@
 #include <string.h>
 #include <unistd.h>
 
+#include <grpc/support/cpu.h>
 #include <grpc/support/log.h>
 #include <grpc/support/sync.h>
 #include <grpc/support/useful.h>
diff --git a/src/core/lib/support/cpu_windows.c b/src/core/lib/support/cpu_windows.cc
similarity index 96%
rename from src/core/lib/support/cpu_windows.c
rename to src/core/lib/support/cpu_windows.cc
index af26ff3..8d89453 100644
--- a/src/core/lib/support/cpu_windows.c
+++ b/src/core/lib/support/cpu_windows.cc
@@ -19,6 +19,7 @@
 #include <grpc/support/port_platform.h>
 
 #ifdef GPR_WINDOWS
+#include <grpc/support/cpu.h>
 #include <grpc/support/log.h>
 
 unsigned gpr_cpu_num_cores(void) {
diff --git a/src/core/lib/support/env_linux.c b/src/core/lib/support/env_linux.cc
similarity index 100%
rename from src/core/lib/support/env_linux.c
rename to src/core/lib/support/env_linux.cc
diff --git a/src/core/lib/support/env_posix.c b/src/core/lib/support/env_posix.cc
similarity index 100%
rename from src/core/lib/support/env_posix.c
rename to src/core/lib/support/env_posix.cc
diff --git a/src/core/lib/support/env_windows.c b/src/core/lib/support/env_windows.cc
similarity index 97%
rename from src/core/lib/support/env_windows.c
rename to src/core/lib/support/env_windows.cc
index 652eeb6..73c643c 100644
--- a/src/core/lib/support/env_windows.c
+++ b/src/core/lib/support/env_windows.cc
@@ -45,7 +45,7 @@
   ret = GetEnvironmentVariable(tname, NULL, 0);
   if (ret == 0) return NULL;
   size = ret * (DWORD)sizeof(TCHAR);
-  tresult = gpr_malloc(size);
+  tresult = (LPTSTR)gpr_malloc(size);
   ret = GetEnvironmentVariable(tname, tresult, size);
   gpr_free(tname);
   if (ret == 0) {
diff --git a/src/core/lib/support/histogram.c b/src/core/lib/support/histogram.cc
similarity index 100%
rename from src/core/lib/support/histogram.c
rename to src/core/lib/support/histogram.cc
diff --git a/src/core/lib/support/host_port.c b/src/core/lib/support/host_port.cc
similarity index 100%
rename from src/core/lib/support/host_port.c
rename to src/core/lib/support/host_port.cc
diff --git a/src/core/lib/support/log.c b/src/core/lib/support/log.cc
similarity index 97%
rename from src/core/lib/support/log.c
rename to src/core/lib/support/log.cc
index fadb4d9..69f92e0 100644
--- a/src/core/lib/support/log.c
+++ b/src/core/lib/support/log.cc
@@ -27,7 +27,7 @@
 #include <stdio.h>
 #include <string.h>
 
-extern void gpr_default_log(gpr_log_func_args *args);
+extern "C" void gpr_default_log(gpr_log_func_args *args);
 static gpr_atm g_log_func = (gpr_atm)gpr_default_log;
 static gpr_atm g_min_severity_to_print = GPR_LOG_VERBOSITY_UNSET;
 
diff --git a/src/core/lib/support/log_android.c b/src/core/lib/support/log_android.cc
similarity index 100%
rename from src/core/lib/support/log_android.c
rename to src/core/lib/support/log_android.cc
diff --git a/src/core/lib/support/log_linux.c b/src/core/lib/support/log_linux.cc
similarity index 97%
rename from src/core/lib/support/log_linux.c
rename to src/core/lib/support/log_linux.cc
index 7755018..0914ace 100644
--- a/src/core/lib/support/log_linux.c
+++ b/src/core/lib/support/log_linux.cc
@@ -56,7 +56,7 @@
   free(message);
 }
 
-void gpr_default_log(gpr_log_func_args *args) {
+extern "C" void gpr_default_log(gpr_log_func_args *args) {
   const char *final_slash;
   char *prefix;
   const char *display_file;
diff --git a/src/core/lib/support/log_posix.c b/src/core/lib/support/log_posix.cc
similarity index 94%
rename from src/core/lib/support/log_posix.c
rename to src/core/lib/support/log_posix.cc
index 8b376fc..38a136e 100644
--- a/src/core/lib/support/log_posix.c
+++ b/src/core/lib/support/log_posix.cc
@@ -48,7 +48,7 @@
   } else if ((size_t)ret <= sizeof(buf) - 1) {
     message = buf;
   } else {
-    message = allocated = gpr_malloc((size_t)ret + 1);
+    message = allocated = (char *)gpr_malloc((size_t)ret + 1);
     va_start(args, format);
     vsnprintf(message, (size_t)(ret + 1), format, args);
     va_end(args);
@@ -57,7 +57,7 @@
   gpr_free(allocated);
 }
 
-void gpr_default_log(gpr_log_func_args *args) {
+extern "C" void gpr_default_log(gpr_log_func_args *args) {
   char *final_slash;
   const char *display_file;
   char time_buffer[64];
diff --git a/src/core/lib/support/log_windows.c b/src/core/lib/support/log_windows.cc
similarity index 94%
rename from src/core/lib/support/log_windows.c
rename to src/core/lib/support/log_windows.cc
index 0fdab79..ee52abe 100644
--- a/src/core/lib/support/log_windows.c
+++ b/src/core/lib/support/log_windows.cc
@@ -47,7 +47,7 @@
   } else {
     /* Allocate a new buffer, with space for the NUL terminator. */
     size_t strp_buflen = (size_t)ret + 1;
-    message = gpr_malloc(strp_buflen);
+    message = (char *)gpr_malloc(strp_buflen);
 
     /* Print to the buffer. */
     va_start(args, format);
@@ -65,8 +65,8 @@
 }
 
 /* Simple starter implementation */
-void gpr_default_log(gpr_log_func_args *args) {
-  char *final_slash;
+extern "C" void gpr_default_log(gpr_log_func_args *args) {
+  const char *final_slash;
   const char *display_file;
   char time_buffer[64];
   time_t timer;
diff --git a/src/core/lib/support/mpscq.c b/src/core/lib/support/mpscq.cc
similarity index 100%
rename from src/core/lib/support/mpscq.c
rename to src/core/lib/support/mpscq.cc
diff --git a/src/core/lib/support/mpscq.h b/src/core/lib/support/mpscq.h
index daa5176..ca63a04 100644
--- a/src/core/lib/support/mpscq.h
+++ b/src/core/lib/support/mpscq.h
@@ -23,6 +23,10 @@
 #include <stdbool.h>
 #include <stddef.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 // Multiple-producer single-consumer lock free queue, based upon the
 // implementation from Dmitry Vyukov here:
 // http://www.1024cores.net/home/lock-free-algorithms/queues/intrusive-mpsc-node-based-queue
@@ -50,4 +54,8 @@
 // Pop a node; sets *empty to true if the queue is empty, or false if it is not
 gpr_mpscq_node *gpr_mpscq_pop_and_check_end(gpr_mpscq *q, bool *empty);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_SUPPORT_MPSCQ_H */
diff --git a/src/core/lib/support/murmur_hash.c b/src/core/lib/support/murmur_hash.cc
similarity index 100%
rename from src/core/lib/support/murmur_hash.c
rename to src/core/lib/support/murmur_hash.cc
diff --git a/src/core/lib/support/murmur_hash.h b/src/core/lib/support/murmur_hash.h
index 7510b4d..a4c642e 100644
--- a/src/core/lib/support/murmur_hash.h
+++ b/src/core/lib/support/murmur_hash.h
@@ -23,7 +23,15 @@
 
 #include <stddef.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* compute the hash of key (length len) */
 uint32_t gpr_murmur_hash3(const void *key, size_t len, uint32_t seed);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_SUPPORT_MURMUR_HASH_H */
diff --git a/src/core/lib/support/spinlock.h b/src/core/lib/support/spinlock.h
index 37adda1..47584f6 100644
--- a/src/core/lib/support/spinlock.h
+++ b/src/core/lib/support/spinlock.h
@@ -25,9 +25,14 @@
    a concurrency code smell. */
 typedef struct { gpr_atm atm; } gpr_spinlock;
 
+#ifdef __cplusplus
+#define GPR_SPINLOCK_INITIALIZER (gpr_spinlock{0})
+#else
 #define GPR_SPINLOCK_INITIALIZER ((gpr_spinlock){0})
+#endif
 #define GPR_SPINLOCK_STATIC_INITIALIZER \
   { 0 }
+
 #define gpr_spinlock_trylock(lock) (gpr_atm_acq_cas(&(lock)->atm, 0, 1))
 #define gpr_spinlock_unlock(lock) (gpr_atm_rel_store(&(lock)->atm, 0))
 #define gpr_spinlock_lock(lock) \
diff --git a/src/core/lib/support/stack_lockfree.c b/src/core/lib/support/stack_lockfree.cc
similarity index 100%
rename from src/core/lib/support/stack_lockfree.c
rename to src/core/lib/support/stack_lockfree.cc
diff --git a/src/core/lib/support/stack_lockfree.h b/src/core/lib/support/stack_lockfree.h
index 6324211..706f63f 100644
--- a/src/core/lib/support/stack_lockfree.h
+++ b/src/core/lib/support/stack_lockfree.h
@@ -21,6 +21,10 @@
 
 #include <stddef.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct gpr_stack_lockfree gpr_stack_lockfree;
 
 /* This stack must specify the maximum number of entries to track.
@@ -35,4 +39,8 @@
 /* Returns -1 on empty or the actual entry number */
 int gpr_stack_lockfree_pop(gpr_stack_lockfree *stack);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_SUPPORT_STACK_LOCKFREE_H */
diff --git a/src/core/lib/support/string.c b/src/core/lib/support/string.cc
similarity index 99%
rename from src/core/lib/support/string.c
rename to src/core/lib/support/string.cc
index 6b172df..d558638 100644
--- a/src/core/lib/support/string.c
+++ b/src/core/lib/support/string.cc
@@ -27,6 +27,7 @@
 #include <grpc/support/alloc.h>
 #include <grpc/support/log.h>
 #include <grpc/support/port_platform.h>
+#include <grpc/support/string_util.h>
 #include <grpc/support/useful.h>
 
 char *gpr_strdup(const char *src) {
diff --git a/src/core/lib/support/string_posix.c b/src/core/lib/support/string_posix.cc
similarity index 97%
rename from src/core/lib/support/string_posix.c
rename to src/core/lib/support/string_posix.cc
index e768faf..92de21a 100644
--- a/src/core/lib/support/string_posix.c
+++ b/src/core/lib/support/string_posix.cc
@@ -25,6 +25,7 @@
 #include <string.h>
 
 #include <grpc/support/alloc.h>
+#include <grpc/support/string_util.h>
 
 int gpr_asprintf(char **strp, const char *format, ...) {
   va_list args;
diff --git a/src/core/lib/support/string_util_windows.c b/src/core/lib/support/string_util_windows.cc
similarity index 84%
rename from src/core/lib/support/string_util_windows.c
rename to src/core/lib/support/string_util_windows.cc
index 2a03404..b365512 100644
--- a/src/core/lib/support/string_util_windows.c
+++ b/src/core/lib/support/string_util_windows.cc
@@ -26,15 +26,18 @@
    anything else, especially strsafe.h. */
 #include <wchar.h>
 
+#include <inttypes.h>
 #include <stdarg.h>
 #include <stdio.h>
 #include <string.h>
 #include <strsafe.h>
 
 #include <grpc/support/alloc.h>
+#include <grpc/support/log_windows.h>
 #include <grpc/support/string_util.h>
 
 #include "src/core/lib/support/string.h"
+#include "src/core/lib/support/string_windows.h"
 
 #if defined UNICODE || defined _UNICODE
 LPTSTR
@@ -42,7 +45,7 @@
   LPTSTR ret;
   int needed = MultiByteToWideChar(CP_UTF8, 0, input, -1, NULL, 0);
   if (needed <= 0) return NULL;
-  ret = gpr_malloc((unsigned)needed * sizeof(TCHAR));
+  ret = (LPTSTR)gpr_malloc((unsigned)needed * sizeof(TCHAR));
   MultiByteToWideChar(CP_UTF8, 0, input, -1, ret, needed);
   return ret;
 }
@@ -52,14 +55,14 @@
   LPSTR ret;
   int needed = WideCharToMultiByte(CP_UTF8, 0, input, -1, NULL, 0, NULL, NULL);
   if (needed <= 0) return NULL;
-  ret = gpr_malloc((unsigned)needed);
+  ret = (LPSTR)gpr_malloc((unsigned)needed);
   WideCharToMultiByte(CP_UTF8, 0, input, -1, ret, needed, NULL, NULL);
   return ret;
 }
 #else
-char *gpr_tchar_to_char(LPTSTR input) { return gpr_strdup(input); }
+LPSTR gpr_tchar_to_char(LPCTSTR input) { return (LPSTR)gpr_strdup(input); }
 
-char *gpr_char_to_tchar(LPTSTR input) { return gpr_strdup(input); }
+LPTSTR gpr_char_to_tchar(LPCTSTR input) { return (LPTSTR)gpr_strdup(input); }
 #endif
 
 char *gpr_format_message(int messageid) {
diff --git a/src/core/lib/support/string_windows.c b/src/core/lib/support/string_windows.cc
similarity index 93%
rename from src/core/lib/support/string_windows.c
rename to src/core/lib/support/string_windows.cc
index 50278d9..d37863c 100644
--- a/src/core/lib/support/string_windows.c
+++ b/src/core/lib/support/string_windows.cc
@@ -27,6 +27,7 @@
 #include <string.h>
 
 #include <grpc/support/alloc.h>
+#include <grpc/support/string_util.h>
 
 #include "src/core/lib/support/string.h"
 
@@ -46,7 +47,7 @@
 
   /* Allocate a new buffer, with space for the NUL terminator. */
   strp_buflen = (size_t)ret + 1;
-  if ((*strp = gpr_malloc(strp_buflen)) == NULL) {
+  if ((*strp = (char *)gpr_malloc(strp_buflen)) == NULL) {
     /* This shouldn't happen, because gpr_malloc() calls abort(). */
     return -1;
   }
diff --git a/src/core/lib/support/string_windows.h b/src/core/lib/support/string_windows.h
index 7c7f31e..6771647 100644
--- a/src/core/lib/support/string_windows.h
+++ b/src/core/lib/support/string_windows.h
@@ -21,6 +21,10 @@
 
 #include <grpc/support/port_platform.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #ifdef GPR_WINDOWS
 
 /* These allocate new strings using gpr_malloc to convert from and to utf-8. */
@@ -29,4 +33,8 @@
 
 #endif /* GPR_WINDOWS */
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_SUPPORT_STRING_WINDOWS_H */
diff --git a/src/core/lib/support/subprocess_posix.c b/src/core/lib/support/subprocess_posix.cc
similarity index 100%
rename from src/core/lib/support/subprocess_posix.c
rename to src/core/lib/support/subprocess_posix.cc
diff --git a/src/core/lib/support/subprocess_windows.c b/src/core/lib/support/subprocess_windows.cc
similarity index 97%
rename from src/core/lib/support/subprocess_windows.c
rename to src/core/lib/support/subprocess_windows.cc
index 7412f8d..6769f1d 100644
--- a/src/core/lib/support/subprocess_windows.c
+++ b/src/core/lib/support/subprocess_windows.cc
@@ -61,7 +61,7 @@
   }
   gpr_free(args_tchar);
 
-  r = gpr_malloc(sizeof(gpr_subprocess));
+  r = (gpr_subprocess *)gpr_malloc(sizeof(gpr_subprocess));
   memset(r, 0, sizeof(*r));
   r->pi = pi;
   return r;
diff --git a/src/core/lib/support/sync.c b/src/core/lib/support/sync.cc
similarity index 100%
rename from src/core/lib/support/sync.c
rename to src/core/lib/support/sync.cc
diff --git a/src/core/lib/support/sync_posix.c b/src/core/lib/support/sync_posix.cc
similarity index 100%
rename from src/core/lib/support/sync_posix.c
rename to src/core/lib/support/sync_posix.cc
diff --git a/src/core/lib/support/sync_windows.c b/src/core/lib/support/sync_windows.cc
similarity index 97%
rename from src/core/lib/support/sync_windows.c
rename to src/core/lib/support/sync_windows.cc
index 008c5ae..62fdd40 100644
--- a/src/core/lib/support/sync_windows.c
+++ b/src/core/lib/support/sync_windows.cc
@@ -104,7 +104,7 @@
   void (*init_function)(void);
 };
 static BOOL CALLBACK run_once_func(gpr_once *once, void *v, void **pv) {
-  struct run_once_func_arg *arg = v;
+  struct run_once_func_arg *arg = (struct run_once_func_arg *)v;
   (*arg->init_function)();
   return 1;
 }
diff --git a/src/core/lib/support/thd.c b/src/core/lib/support/thd.cc
similarity index 100%
rename from src/core/lib/support/thd.c
rename to src/core/lib/support/thd.cc
diff --git a/src/core/lib/support/thd_posix.c b/src/core/lib/support/thd_posix.cc
similarity index 100%
rename from src/core/lib/support/thd_posix.c
rename to src/core/lib/support/thd_posix.cc
diff --git a/src/core/lib/support/thd_windows.c b/src/core/lib/support/thd_windows.cc
similarity index 96%
rename from src/core/lib/support/thd_windows.c
rename to src/core/lib/support/thd_windows.cc
index 54533e9..1a82805 100644
--- a/src/core/lib/support/thd_windows.c
+++ b/src/core/lib/support/thd_windows.cc
@@ -66,7 +66,7 @@
 int gpr_thd_new(gpr_thd_id *t, void (*thd_body)(void *arg), void *arg,
                 const gpr_thd_options *options) {
   HANDLE handle;
-  struct thd_info *info = gpr_malloc(sizeof(*info));
+  struct thd_info *info = (struct thd_info *)gpr_malloc(sizeof(*info));
   info->body = thd_body;
   info->arg = arg;
   *t = 0;
diff --git a/src/core/lib/support/time.c b/src/core/lib/support/time.cc
similarity index 100%
rename from src/core/lib/support/time.c
rename to src/core/lib/support/time.cc
diff --git a/src/core/lib/support/time_posix.c b/src/core/lib/support/time_posix.cc
similarity index 99%
rename from src/core/lib/support/time_posix.c
rename to src/core/lib/support/time_posix.cc
index 3ead40d..deccb50 100644
--- a/src/core/lib/support/time_posix.c
+++ b/src/core/lib/support/time_posix.cc
@@ -128,7 +128,9 @@
 }
 #endif
 
+extern "C" {
 gpr_timespec (*gpr_now_impl)(gpr_clock_type clock_type) = now_impl;
+}
 
 #ifdef GPR_LOW_LEVEL_COUNTERS
 gpr_atm gpr_now_call_count;
diff --git a/src/core/lib/support/time_precise.c b/src/core/lib/support/time_precise.cc
similarity index 97%
rename from src/core/lib/support/time_precise.c
rename to src/core/lib/support/time_precise.cc
index 6ce19e5..05ef7c5 100644
--- a/src/core/lib/support/time_precise.c
+++ b/src/core/lib/support/time_precise.cc
@@ -20,6 +20,8 @@
 #include <grpc/support/time.h>
 #include <stdio.h>
 
+#include "src/core/lib/support/time_precise.h"
+
 #ifdef GRPC_TIMERS_RDTSC
 #if defined(__i386__)
 static void gpr_get_cycle_counter(int64_t int *clk) {
diff --git a/src/core/lib/support/time_precise.h b/src/core/lib/support/time_precise.h
index aa28d6d..cb15cdf 100644
--- a/src/core/lib/support/time_precise.h
+++ b/src/core/lib/support/time_precise.h
@@ -21,7 +21,15 @@
 
 #include <grpc/support/time.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 void gpr_precise_clock_init(void);
 void gpr_precise_clock_now(gpr_timespec *clk);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_SUPPORT_TIME_PRECISE_H */
diff --git a/src/core/lib/support/time_windows.c b/src/core/lib/support/time_windows.cc
similarity index 98%
rename from src/core/lib/support/time_windows.c
rename to src/core/lib/support/time_windows.cc
index 40df376..dda7566 100644
--- a/src/core/lib/support/time_windows.c
+++ b/src/core/lib/support/time_windows.cc
@@ -69,7 +69,9 @@
   return now_tv;
 }
 
+extern "C" {
 gpr_timespec (*gpr_now_impl)(gpr_clock_type clock_type) = now_impl;
+}
 
 gpr_timespec gpr_now(gpr_clock_type clock_type) {
   return gpr_now_impl(clock_type);
diff --git a/src/core/lib/support/tls_pthread.c b/src/core/lib/support/tls_pthread.cc
similarity index 100%
rename from src/core/lib/support/tls_pthread.c
rename to src/core/lib/support/tls_pthread.cc
diff --git a/src/core/lib/support/tmpfile_msys.c b/src/core/lib/support/tmpfile_msys.cc
similarity index 100%
rename from src/core/lib/support/tmpfile_msys.c
rename to src/core/lib/support/tmpfile_msys.cc
diff --git a/src/core/lib/support/tmpfile_posix.c b/src/core/lib/support/tmpfile_posix.cc
similarity index 100%
rename from src/core/lib/support/tmpfile_posix.c
rename to src/core/lib/support/tmpfile_posix.cc
diff --git a/src/core/lib/support/tmpfile_windows.c b/src/core/lib/support/tmpfile_windows.cc
similarity index 100%
rename from src/core/lib/support/tmpfile_windows.c
rename to src/core/lib/support/tmpfile_windows.cc
diff --git a/src/core/lib/support/wrap_memcpy.c b/src/core/lib/support/wrap_memcpy.cc
similarity index 98%
rename from src/core/lib/support/wrap_memcpy.c
rename to src/core/lib/support/wrap_memcpy.cc
index cff056d..c2362bf 100644
--- a/src/core/lib/support/wrap_memcpy.c
+++ b/src/core/lib/support/wrap_memcpy.cc
@@ -26,6 +26,7 @@
  * Enable by setting LDFLAGS=-Wl,-wrap,memcpy when linking.
  */
 
+extern "C" {
 #ifdef __linux__
 #if defined(__x86_64__) && !defined(GPR_MUSL_LIBC_COMPAT)
 __asm__(".symver memcpy,memcpy@GLIBC_2.2.5");
@@ -38,3 +39,4 @@
 }
 #endif
 #endif
+}
diff --git a/src/core/lib/surface/alarm.c b/src/core/lib/surface/alarm.cc
similarity index 98%
rename from src/core/lib/surface/alarm.c
rename to src/core/lib/surface/alarm.cc
index 7712f56..4e67543 100644
--- a/src/core/lib/surface/alarm.c
+++ b/src/core/lib/surface/alarm.cc
@@ -15,6 +15,10 @@
  * limitations under the License.
  *
  */
+#include <grpc/support/port_platform.h>
+
+#include <inttypes.h>
+
 #include "src/core/lib/surface/alarm_internal.h"
 
 #include <grpc/grpc.h>
diff --git a/src/core/lib/surface/alarm_internal.h b/src/core/lib/surface/alarm_internal.h
index 7f2126c..136b605 100644
--- a/src/core/lib/surface/alarm_internal.h
+++ b/src/core/lib/surface/alarm_internal.h
@@ -22,6 +22,10 @@
 #include <grpc/support/log.h>
 #include "src/core/lib/debug/trace.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #ifndef NDEBUG
 
 extern grpc_tracer_flag grpc_trace_alarm_refcount;
@@ -37,4 +41,8 @@
 
 #endif /* defined(NDEBUG) */
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_SURFACE_ALARM_INTERNAL_H */
diff --git a/src/core/lib/surface/api_trace.c b/src/core/lib/surface/api_trace.cc
similarity index 100%
rename from src/core/lib/surface/api_trace.c
rename to src/core/lib/surface/api_trace.cc
diff --git a/src/core/lib/surface/api_trace.h b/src/core/lib/surface/api_trace.h
index 849cbaa..105abdf 100644
--- a/src/core/lib/surface/api_trace.h
+++ b/src/core/lib/surface/api_trace.h
@@ -22,6 +22,10 @@
 #include <grpc/support/log.h>
 #include "src/core/lib/debug/trace.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 extern grpc_tracer_flag grpc_api_trace;
 
 /* Provide unwrapping macros because we're in C89 and variadic macros weren't
@@ -47,4 +51,8 @@
     gpr_log(GPR_INFO, fmt GRPC_API_TRACE_UNWRAP##nargs args); \
   }
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_SURFACE_API_TRACE_H */
diff --git a/src/core/lib/surface/byte_buffer.c b/src/core/lib/surface/byte_buffer.cc
similarity index 100%
rename from src/core/lib/surface/byte_buffer.c
rename to src/core/lib/surface/byte_buffer.cc
diff --git a/src/core/lib/surface/byte_buffer_reader.c b/src/core/lib/surface/byte_buffer_reader.cc
similarity index 100%
rename from src/core/lib/surface/byte_buffer_reader.c
rename to src/core/lib/surface/byte_buffer_reader.cc
diff --git a/src/core/lib/surface/call.c b/src/core/lib/surface/call.cc
similarity index 98%
rename from src/core/lib/surface/call.c
rename to src/core/lib/surface/call.cc
index 03f4755..6c97f5c 100644
--- a/src/core/lib/surface/call.c
+++ b/src/core/lib/surface/call.cc
@@ -41,6 +41,7 @@
 #include "src/core/lib/support/string.h"
 #include "src/core/lib/surface/api_trace.h"
 #include "src/core/lib/surface/call.h"
+#include "src/core/lib/surface/call_test_only.h"
 #include "src/core/lib/surface/channel.h"
 #include "src/core/lib/surface/completion_queue.h"
 #include "src/core/lib/surface/validate_metadata.h"
@@ -93,10 +94,11 @@
 }
 
 static received_status unpack_received_status(gpr_atm atm) {
-  return (atm & 1) == 0
-             ? (received_status){.is_set = false, .error = GRPC_ERROR_NONE}
-             : (received_status){.is_set = true,
-                                 .error = (grpc_error *)(atm & ~(gpr_atm)1)};
+  if ((atm & 1) == 0) {
+    return {false, GRPC_ERROR_NONE};
+  } else {
+    return {true, (grpc_error *)(atm & ~(gpr_atm)1)};
+  }
 }
 
 #define MAX_ERRORS_PER_BATCH 4
@@ -439,15 +441,14 @@
 
   GRPC_CHANNEL_INTERNAL_REF(args->channel, "call");
   /* initial refcount dropped by grpc_call_unref */
-  grpc_call_element_args call_args = {
-      .call_stack = CALL_STACK_FROM_CALL(call),
-      .server_transport_data = args->server_transport_data,
-      .context = call->context,
-      .path = path,
-      .start_time = call->start_time,
-      .deadline = send_deadline,
-      .arena = call->arena,
-      .call_combiner = &call->call_combiner};
+  grpc_call_element_args call_args = {CALL_STACK_FROM_CALL(call),
+                                      args->server_transport_data,
+                                      call->context,
+                                      path,
+                                      call->start_time,
+                                      send_deadline,
+                                      call->arena,
+                                      &call->call_combiner};
   add_init_error(&error, grpc_call_stack_init(exec_ctx, channel_stack, 1,
                                               destroy_call, call, &call_args));
   if (error != GRPC_ERROR_NONE) {
@@ -807,10 +808,8 @@
 static void set_status_from_error(grpc_exec_ctx *exec_ctx, grpc_call *call,
                                   status_source source, grpc_error *error) {
   if (!gpr_atm_rel_cas(&call->status[source],
-                       pack_received_status((received_status){
-                           .is_set = false, .error = GRPC_ERROR_NONE}),
-                       pack_received_status((received_status){
-                           .is_set = true, .error = error}))) {
+                       pack_received_status({false, GRPC_ERROR_NONE}),
+                       pack_received_status({true, error}))) {
     GRPC_ERROR_UNREF(error);
   }
 }
diff --git a/src/core/lib/surface/call_details.c b/src/core/lib/surface/call_details.cc
similarity index 100%
rename from src/core/lib/surface/call_details.c
rename to src/core/lib/surface/call_details.cc
diff --git a/src/core/lib/surface/call_log_batch.c b/src/core/lib/surface/call_log_batch.cc
similarity index 98%
rename from src/core/lib/surface/call_log_batch.c
rename to src/core/lib/surface/call_log_batch.cc
index 4a1c265..5557927 100644
--- a/src/core/lib/surface/call_log_batch.c
+++ b/src/core/lib/surface/call_log_batch.cc
@@ -18,6 +18,8 @@
 
 #include "src/core/lib/surface/call.h"
 
+#include <inttypes.h>
+
 #include <grpc/support/alloc.h>
 #include <grpc/support/string_util.h>
 #include "src/core/lib/slice/slice_string_helpers.h"
diff --git a/src/core/lib/surface/channel.c b/src/core/lib/surface/channel.cc
similarity index 95%
rename from src/core/lib/surface/channel.c
rename to src/core/lib/surface/channel.cc
index 48962e5..59fced7 100644
--- a/src/core/lib/surface/channel.c
+++ b/src/core/lib/surface/channel.cc
@@ -18,6 +18,7 @@
 
 #include "src/core/lib/surface/channel.h"
 
+#include <inttypes.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -144,9 +145,8 @@
       channel->compression_options.default_level.level =
           (grpc_compression_level)grpc_channel_arg_get_integer(
               &args->args[i],
-              (grpc_integer_options){GRPC_COMPRESS_LEVEL_NONE,
-                                     GRPC_COMPRESS_LEVEL_NONE,
-                                     GRPC_COMPRESS_LEVEL_COUNT - 1});
+              {GRPC_COMPRESS_LEVEL_NONE, GRPC_COMPRESS_LEVEL_NONE,
+               GRPC_COMPRESS_LEVEL_COUNT - 1});
     } else if (0 == strcmp(args->args[i].key,
                            GRPC_STREAM_COMPRESSION_CHANNEL_DEFAULT_LEVEL)) {
       channel->compression_options.default_stream_compression_level.is_set =
@@ -154,17 +154,15 @@
       channel->compression_options.default_stream_compression_level.level =
           (grpc_stream_compression_level)grpc_channel_arg_get_integer(
               &args->args[i],
-              (grpc_integer_options){GRPC_STREAM_COMPRESS_LEVEL_NONE,
-                                     GRPC_STREAM_COMPRESS_LEVEL_NONE,
-                                     GRPC_STREAM_COMPRESS_LEVEL_COUNT - 1});
+              {GRPC_STREAM_COMPRESS_LEVEL_NONE, GRPC_STREAM_COMPRESS_LEVEL_NONE,
+               GRPC_STREAM_COMPRESS_LEVEL_COUNT - 1});
     } else if (0 == strcmp(args->args[i].key,
                            GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM)) {
       channel->compression_options.default_algorithm.is_set = true;
       channel->compression_options.default_algorithm.algorithm =
           (grpc_compression_algorithm)grpc_channel_arg_get_integer(
-              &args->args[i],
-              (grpc_integer_options){GRPC_COMPRESS_NONE, GRPC_COMPRESS_NONE,
-                                     GRPC_COMPRESS_ALGORITHMS_COUNT - 1});
+              &args->args[i], {GRPC_COMPRESS_NONE, GRPC_COMPRESS_NONE,
+                               GRPC_COMPRESS_ALGORITHMS_COUNT - 1});
     } else if (0 == strcmp(args->args[i].key,
                            GRPC_STREAM_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM)) {
       channel->compression_options.default_stream_compression_algorithm.is_set =
@@ -173,9 +171,8 @@
           .algorithm =
           (grpc_stream_compression_algorithm)grpc_channel_arg_get_integer(
               &args->args[i],
-              (grpc_integer_options){
-                  GRPC_STREAM_COMPRESS_NONE, GRPC_STREAM_COMPRESS_NONE,
-                  GRPC_STREAM_COMPRESS_ALGORITHMS_COUNT - 1});
+              {GRPC_STREAM_COMPRESS_NONE, GRPC_STREAM_COMPRESS_NONE,
+               GRPC_STREAM_COMPRESS_ALGORITHMS_COUNT - 1});
     } else if (0 ==
                strcmp(args->args[i].key,
                       GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET)) {
diff --git a/src/core/lib/surface/channel.h b/src/core/lib/surface/channel.h
index 528bb86..427422b 100644
--- a/src/core/lib/surface/channel.h
+++ b/src/core/lib/surface/channel.h
@@ -23,6 +23,10 @@
 #include "src/core/lib/channel/channel_stack_builder.h"
 #include "src/core/lib/surface/channel_stack_type.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 grpc_channel *grpc_channel_create(grpc_exec_ctx *exec_ctx, const char *target,
                                   const grpc_channel_args *args,
                                   grpc_channel_stack_type channel_stack_type,
@@ -81,4 +85,8 @@
 grpc_compression_options grpc_channel_compression_options(
     const grpc_channel *channel);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_SURFACE_CHANNEL_H */
diff --git a/src/core/lib/surface/channel_init.c b/src/core/lib/surface/channel_init.cc
similarity index 100%
rename from src/core/lib/surface/channel_init.c
rename to src/core/lib/surface/channel_init.cc
diff --git a/src/core/lib/surface/channel_ping.c b/src/core/lib/surface/channel_ping.cc
similarity index 100%
rename from src/core/lib/surface/channel_ping.c
rename to src/core/lib/surface/channel_ping.cc
diff --git a/src/core/lib/surface/channel_stack_type.c b/src/core/lib/surface/channel_stack_type.cc
similarity index 100%
rename from src/core/lib/surface/channel_stack_type.c
rename to src/core/lib/surface/channel_stack_type.cc
diff --git a/src/core/lib/surface/channel_stack_type.h b/src/core/lib/surface/channel_stack_type.h
index 3f0e14f..903b90a 100644
--- a/src/core/lib/surface/channel_stack_type.h
+++ b/src/core/lib/surface/channel_stack_type.h
@@ -21,6 +21,10 @@
 
 #include <stdbool.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef enum {
   // normal top-half client channel with load-balancing, connection management
   GRPC_CLIENT_CHANNEL,
@@ -42,4 +46,8 @@
 
 const char *grpc_channel_stack_type_string(grpc_channel_stack_type type);
 
-#endif /* GRPC_CORE_LIB_SURFACE_CHANNEL_STACK_TYPE_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_SURFACE_CHANNEL_STACK_TYPE_H */
\ No newline at end of file
diff --git a/src/core/lib/surface/completion_queue.c b/src/core/lib/surface/completion_queue.cc
similarity index 96%
rename from src/core/lib/surface/completion_queue.c
rename to src/core/lib/surface/completion_queue.cc
index fed66e3..453646b 100644
--- a/src/core/lib/surface/completion_queue.c
+++ b/src/core/lib/surface/completion_queue.cc
@@ -15,8 +15,11 @@
  * limitations under the License.
  *
  */
+#include <grpc/support/port_platform.h>
+
 #include "src/core/lib/surface/completion_queue.h"
 
+#include <inttypes.h>
 #include <stdio.h>
 #include <string.h>
 
@@ -164,32 +167,15 @@
 
 static const cq_poller_vtable g_poller_vtable_by_poller_type[] = {
     /* GRPC_CQ_DEFAULT_POLLING */
-    {.can_get_pollset = true,
-     .can_listen = true,
-     .size = grpc_pollset_size,
-     .init = grpc_pollset_init,
-     .kick = grpc_pollset_kick,
-     .work = grpc_pollset_work,
-     .shutdown = grpc_pollset_shutdown,
-     .destroy = grpc_pollset_destroy},
+    {true, true, grpc_pollset_size, grpc_pollset_init, grpc_pollset_kick,
+     grpc_pollset_work, grpc_pollset_shutdown, grpc_pollset_destroy},
     /* GRPC_CQ_NON_LISTENING */
-    {.can_get_pollset = true,
-     .can_listen = false,
-     .size = grpc_pollset_size,
-     .init = grpc_pollset_init,
-     .kick = grpc_pollset_kick,
-     .work = grpc_pollset_work,
-     .shutdown = grpc_pollset_shutdown,
-     .destroy = grpc_pollset_destroy},
+    {true, false, grpc_pollset_size, grpc_pollset_init, grpc_pollset_kick,
+     grpc_pollset_work, grpc_pollset_shutdown, grpc_pollset_destroy},
     /* GRPC_CQ_NON_POLLING */
-    {.can_get_pollset = false,
-     .can_listen = false,
-     .size = non_polling_poller_size,
-     .init = non_polling_poller_init,
-     .kick = non_polling_poller_kick,
-     .work = non_polling_poller_work,
-     .shutdown = non_polling_poller_shutdown,
-     .destroy = non_polling_poller_destroy},
+    {false, false, non_polling_poller_size, non_polling_poller_init,
+     non_polling_poller_kick, non_polling_poller_work,
+     non_polling_poller_shutdown, non_polling_poller_destroy},
 };
 
 typedef struct cq_vtable {
@@ -838,13 +824,13 @@
   GRPC_CQ_INTERNAL_REF(cq, "next");
 
   cq_is_finished_arg is_finished_arg = {
-      .last_seen_things_queued_ever =
-          gpr_atm_no_barrier_load(&cqd->things_queued_ever),
-      .cq = cq,
-      .deadline = deadline,
-      .stolen_completion = NULL,
-      .tag = NULL,
-      .first_loop = true};
+
+      gpr_atm_no_barrier_load(&cqd->things_queued_ever),
+      cq,
+      deadline,
+      NULL,
+      NULL,
+      true};
   grpc_exec_ctx exec_ctx =
       GRPC_EXEC_CTX_INITIALIZER(0, cq_is_next_finished, &is_finished_arg);
 
@@ -1080,13 +1066,12 @@
   GRPC_CQ_INTERNAL_REF(cq, "pluck");
   gpr_mu_lock(cq->mu);
   cq_is_finished_arg is_finished_arg = {
-      .last_seen_things_queued_ever =
-          gpr_atm_no_barrier_load(&cqd->things_queued_ever),
-      .cq = cq,
-      .deadline = deadline,
-      .stolen_completion = NULL,
-      .tag = tag,
-      .first_loop = true};
+      gpr_atm_no_barrier_load(&cqd->things_queued_ever),
+      cq,
+      deadline,
+      NULL,
+      tag,
+      true};
   grpc_exec_ctx exec_ctx =
       GRPC_EXEC_CTX_INITIALIZER(0, cq_is_pluck_finished, &is_finished_arg);
   for (;;) {
diff --git a/src/core/lib/surface/completion_queue_factory.c b/src/core/lib/surface/completion_queue_factory.cc
similarity index 100%
rename from src/core/lib/surface/completion_queue_factory.c
rename to src/core/lib/surface/completion_queue_factory.cc
diff --git a/src/core/lib/surface/completion_queue_factory.h b/src/core/lib/surface/completion_queue_factory.h
index 89be8f8..cb0af6f 100644
--- a/src/core/lib/surface/completion_queue_factory.h
+++ b/src/core/lib/surface/completion_queue_factory.h
@@ -22,6 +22,10 @@
 #include <grpc/grpc.h>
 #include "src/core/lib/surface/completion_queue.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct grpc_completion_queue_factory_vtable {
   grpc_completion_queue* (*create)(const grpc_completion_queue_factory*,
                                    const grpc_completion_queue_attributes*);
@@ -33,4 +37,8 @@
   grpc_completion_queue_factory_vtable* vtable;
 };
 
-#endif /* GRPC_CORE_LIB_SURFACE_COMPLETION_QUEUE_FACTORY_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_SURFACE_COMPLETION_QUEUE_FACTORY_H */
\ No newline at end of file
diff --git a/src/core/lib/surface/event_string.c b/src/core/lib/surface/event_string.cc
similarity index 100%
rename from src/core/lib/surface/event_string.c
rename to src/core/lib/surface/event_string.cc
diff --git a/src/core/lib/surface/event_string.h b/src/core/lib/surface/event_string.h
index f00efca..127609c 100644
--- a/src/core/lib/surface/event_string.h
+++ b/src/core/lib/surface/event_string.h
@@ -21,7 +21,15 @@
 
 #include <grpc/grpc.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Returns a string describing an event. Must be later freed with gpr_free() */
 char *grpc_event_string(grpc_event *ev);
 
-#endif /* GRPC_CORE_LIB_SURFACE_EVENT_STRING_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_SURFACE_EVENT_STRING_H */
\ No newline at end of file
diff --git a/src/core/lib/surface/init.c b/src/core/lib/surface/init.cc
similarity index 100%
rename from src/core/lib/surface/init.c
rename to src/core/lib/surface/init.cc
diff --git a/src/core/lib/surface/init.h b/src/core/lib/surface/init.h
index 9353208..b2f4857 100644
--- a/src/core/lib/surface/init.h
+++ b/src/core/lib/surface/init.h
@@ -19,9 +19,17 @@
 #ifndef GRPC_CORE_LIB_SURFACE_INIT_H
 #define GRPC_CORE_LIB_SURFACE_INIT_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 void grpc_register_security_filters(void);
 void grpc_security_pre_init(void);
 void grpc_security_init(void);
 int grpc_is_initialized(void);
 
-#endif /* GRPC_CORE_LIB_SURFACE_INIT_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_SURFACE_INIT_H */
\ No newline at end of file
diff --git a/src/core/lib/surface/init_secure.c b/src/core/lib/surface/init_secure.cc
similarity index 100%
rename from src/core/lib/surface/init_secure.c
rename to src/core/lib/surface/init_secure.cc
diff --git a/src/core/lib/surface/init_unsecure.c b/src/core/lib/surface/init_unsecure.cc
similarity index 100%
rename from src/core/lib/surface/init_unsecure.c
rename to src/core/lib/surface/init_unsecure.cc
diff --git a/src/core/lib/surface/lame_client.h b/src/core/lib/surface/lame_client.h
index 3ce353f..2f6f9cd 100644
--- a/src/core/lib/surface/lame_client.h
+++ b/src/core/lib/surface/lame_client.h
@@ -21,6 +21,14 @@
 
 #include "src/core/lib/channel/channel_stack.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 extern const grpc_channel_filter grpc_lame_filter;
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_LIB_SURFACE_LAME_CLIENT_H */
diff --git a/src/core/lib/surface/metadata_array.c b/src/core/lib/surface/metadata_array.cc
similarity index 100%
rename from src/core/lib/surface/metadata_array.c
rename to src/core/lib/surface/metadata_array.cc
diff --git a/src/core/lib/surface/server.c b/src/core/lib/surface/server.cc
similarity index 100%
rename from src/core/lib/surface/server.c
rename to src/core/lib/surface/server.cc
diff --git a/src/core/lib/surface/server.h b/src/core/lib/surface/server.h
index dd5639d..1114715 100644
--- a/src/core/lib/surface/server.h
+++ b/src/core/lib/surface/server.h
@@ -24,6 +24,10 @@
 #include "src/core/lib/debug/trace.h"
 #include "src/core/lib/transport/transport.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 extern const grpc_channel_filter grpc_server_top_filter;
 
 /** Lightweight tracing of server channel state */
@@ -54,4 +58,8 @@
 void grpc_server_get_pollsets(grpc_server *server, grpc_pollset ***pollsets,
                               size_t *pollset_count);
 
-#endif /* GRPC_CORE_LIB_SURFACE_SERVER_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_SURFACE_SERVER_H */
\ No newline at end of file
diff --git a/src/core/lib/surface/validate_metadata.c b/src/core/lib/surface/validate_metadata.cc
similarity index 97%
rename from src/core/lib/surface/validate_metadata.c
rename to src/core/lib/surface/validate_metadata.cc
index 61209ae..81d07fa 100644
--- a/src/core/lib/surface/validate_metadata.c
+++ b/src/core/lib/surface/validate_metadata.cc
@@ -26,6 +26,7 @@
 #include "src/core/lib/iomgr/error.h"
 #include "src/core/lib/slice/slice_internal.h"
 #include "src/core/lib/slice/slice_string_helpers.h"
+#include "src/core/lib/surface/validate_metadata.h"
 
 static grpc_error *conforms_to(grpc_slice slice, const uint8_t *legal_bits,
                                const char *err_desc) {
diff --git a/src/core/lib/surface/validate_metadata.h b/src/core/lib/surface/validate_metadata.h
index de869d8..aa02419 100644
--- a/src/core/lib/surface/validate_metadata.h
+++ b/src/core/lib/surface/validate_metadata.h
@@ -22,7 +22,15 @@
 #include <grpc/slice.h>
 #include "src/core/lib/iomgr/error.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 grpc_error *grpc_validate_header_key_is_legal(grpc_slice slice);
 grpc_error *grpc_validate_header_nonbin_value_is_legal(grpc_slice slice);
 
-#endif /* GRPC_CORE_LIB_SURFACE_VALIDATE_METADATA_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_SURFACE_VALIDATE_METADATA_H */
\ No newline at end of file
diff --git a/src/core/lib/surface/version.c b/src/core/lib/surface/version.cc
similarity index 92%
rename from src/core/lib/surface/version.c
rename to src/core/lib/surface/version.cc
index fd6ea4d..6cb8e7e 100644
--- a/src/core/lib/surface/version.c
+++ b/src/core/lib/surface/version.cc
@@ -23,4 +23,4 @@
 
 const char *grpc_version_string(void) { return "5.0.0-dev"; }
 
-const char *grpc_g_stands_for(void) { return "gambit"; }
+const char *grpc_g_stands_for(void) { return "generous"; }
diff --git a/src/core/lib/transport/bdp_estimator.c b/src/core/lib/transport/bdp_estimator.cc
similarity index 98%
rename from src/core/lib/transport/bdp_estimator.c
rename to src/core/lib/transport/bdp_estimator.cc
index 8b57693..e7fa0ee 100644
--- a/src/core/lib/transport/bdp_estimator.c
+++ b/src/core/lib/transport/bdp_estimator.cc
@@ -18,6 +18,7 @@
 
 #include "src/core/lib/transport/bdp_estimator.h"
 
+#include <inttypes.h>
 #include <stdlib.h>
 
 #include <grpc/support/log.h>
diff --git a/src/core/lib/transport/bdp_estimator.h b/src/core/lib/transport/bdp_estimator.h
index 1ef0dc9..21c27ec 100644
--- a/src/core/lib/transport/bdp_estimator.h
+++ b/src/core/lib/transport/bdp_estimator.h
@@ -27,6 +27,10 @@
 #define GRPC_BDP_SAMPLES 16
 #define GRPC_BDP_MIN_SAMPLES_FOR_ESTIMATE 3
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 extern grpc_tracer_flag grpc_bdp_estimator_trace;
 
 typedef enum {
@@ -66,4 +70,8 @@
 // Completes a previously started ping
 void grpc_bdp_estimator_complete_ping(grpc_bdp_estimator *estimator);
 
-#endif /* GRPC_CORE_LIB_TRANSPORT_BDP_ESTIMATOR_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_TRANSPORT_BDP_ESTIMATOR_H */
\ No newline at end of file
diff --git a/src/core/lib/transport/byte_stream.c b/src/core/lib/transport/byte_stream.cc
similarity index 100%
rename from src/core/lib/transport/byte_stream.c
rename to src/core/lib/transport/byte_stream.cc
diff --git a/src/core/lib/transport/byte_stream.h b/src/core/lib/transport/byte_stream.h
index be2a352..d3e04df 100644
--- a/src/core/lib/transport/byte_stream.h
+++ b/src/core/lib/transport/byte_stream.h
@@ -28,6 +28,10 @@
 /** Mask of all valid internal flags. */
 #define GRPC_WRITE_INTERNAL_USED_MASK (GRPC_WRITE_INTERNAL_COMPRESS)
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct grpc_byte_stream grpc_byte_stream;
 
 typedef struct {
@@ -135,4 +139,8 @@
 // Resets the byte stream to the start of the underlying stream.
 void grpc_caching_byte_stream_reset(grpc_caching_byte_stream *stream);
 
-#endif /* GRPC_CORE_LIB_TRANSPORT_BYTE_STREAM_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_TRANSPORT_BYTE_STREAM_H */
\ No newline at end of file
diff --git a/src/core/lib/transport/connectivity_state.c b/src/core/lib/transport/connectivity_state.cc
similarity index 100%
rename from src/core/lib/transport/connectivity_state.c
rename to src/core/lib/transport/connectivity_state.cc
diff --git a/src/core/lib/transport/connectivity_state.h b/src/core/lib/transport/connectivity_state.h
index 2fece6c..1796a54 100644
--- a/src/core/lib/transport/connectivity_state.h
+++ b/src/core/lib/transport/connectivity_state.h
@@ -23,6 +23,10 @@
 #include "src/core/lib/debug/trace.h"
 #include "src/core/lib/iomgr/exec_ctx.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct grpc_connectivity_state_watcher {
   /** we keep watchers in a linked list */
   struct grpc_connectivity_state_watcher *next;
@@ -84,4 +88,8 @@
     grpc_exec_ctx *exec_ctx, grpc_connectivity_state_tracker *tracker,
     grpc_connectivity_state *current, grpc_closure *notify);
 
-#endif /* GRPC_CORE_LIB_TRANSPORT_CONNECTIVITY_STATE_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_TRANSPORT_CONNECTIVITY_STATE_H */
\ No newline at end of file
diff --git a/src/core/lib/transport/error_utils.c b/src/core/lib/transport/error_utils.cc
similarity index 100%
rename from src/core/lib/transport/error_utils.c
rename to src/core/lib/transport/error_utils.cc
diff --git a/src/core/lib/transport/error_utils.h b/src/core/lib/transport/error_utils.h
index e530884..18ff548 100644
--- a/src/core/lib/transport/error_utils.h
+++ b/src/core/lib/transport/error_utils.h
@@ -22,6 +22,10 @@
 #include "src/core/lib/iomgr/error.h"
 #include "src/core/lib/transport/http2_errors.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /// A utility function to get the status code and message to be returned
 /// to the application.  If not set in the top-level message, looks
 /// through child errors until it finds the first one with these attributes.
@@ -38,4 +42,8 @@
 /// GRPC_ERROR_CANCELLED
 bool grpc_error_has_clear_grpc_status(grpc_error *error);
 
-#endif /* GRPC_CORE_LIB_TRANSPORT_ERROR_UTILS_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_TRANSPORT_ERROR_UTILS_H */
\ No newline at end of file
diff --git a/src/core/lib/transport/metadata.c b/src/core/lib/transport/metadata.cc
similarity index 99%
rename from src/core/lib/transport/metadata.c
rename to src/core/lib/transport/metadata.cc
index 188b485..5455b24 100644
--- a/src/core/lib/transport/metadata.c
+++ b/src/core/lib/transport/metadata.cc
@@ -19,6 +19,7 @@
 #include "src/core/lib/transport/metadata.h"
 
 #include <assert.h>
+#include <inttypes.h>
 #include <stddef.h>
 #include <string.h>
 
diff --git a/src/core/lib/transport/metadata.h b/src/core/lib/transport/metadata.h
index 974469e..9f82225 100644
--- a/src/core/lib/transport/metadata.h
+++ b/src/core/lib/transport/metadata.h
@@ -102,8 +102,13 @@
   ((grpc_mdelem_data *)((md).payload & ~(uintptr_t)3))
 #define GRPC_MDELEM_STORAGE(md) \
   ((grpc_mdelem_data_storage)((md).payload & (uintptr_t)3))
+#ifdef __cplusplus
+#define GRPC_MAKE_MDELEM(data, storage) \
+  (grpc_mdelem{((uintptr_t)(data)) | ((uintptr_t)storage)})
+#else
 #define GRPC_MAKE_MDELEM(data, storage) \
   ((grpc_mdelem){((uintptr_t)(data)) | ((uintptr_t)storage)})
+#endif
 #define GRPC_MDELEM_IS_INTERNED(md)          \
   ((grpc_mdelem_data_storage)((md).payload & \
                               (uintptr_t)GRPC_MDELEM_STORAGE_INTERNED_BIT))
diff --git a/src/core/lib/transport/metadata_batch.c b/src/core/lib/transport/metadata_batch.cc
similarity index 100%
rename from src/core/lib/transport/metadata_batch.c
rename to src/core/lib/transport/metadata_batch.cc
diff --git a/src/core/lib/transport/metadata_batch.h b/src/core/lib/transport/metadata_batch.h
index 57d298c..63f30a7 100644
--- a/src/core/lib/transport/metadata_batch.h
+++ b/src/core/lib/transport/metadata_batch.h
@@ -125,10 +125,11 @@
 } grpc_filtered_mdelem;
 
 #define GRPC_FILTERED_ERROR(error) \
-  ((grpc_filtered_mdelem){(error), GRPC_MDNULL})
-#define GRPC_FILTERED_MDELEM(md) ((grpc_filtered_mdelem){GRPC_ERROR_NONE, (md)})
+  { (error), GRPC_MDNULL }
+#define GRPC_FILTERED_MDELEM(md) \
+  { GRPC_ERROR_NONE, (md) }
 #define GRPC_FILTERED_REMOVE() \
-  ((grpc_filtered_mdelem){GRPC_ERROR_NONE, GRPC_MDNULL})
+  { GRPC_ERROR_NONE, GRPC_MDNULL }
 
 typedef grpc_filtered_mdelem (*grpc_metadata_batch_filter_func)(
     grpc_exec_ctx *exec_ctx, void *user_data, grpc_mdelem elem);
diff --git a/src/core/lib/transport/pid_controller.c b/src/core/lib/transport/pid_controller.cc
similarity index 100%
rename from src/core/lib/transport/pid_controller.c
rename to src/core/lib/transport/pid_controller.cc
diff --git a/src/core/lib/transport/pid_controller.h b/src/core/lib/transport/pid_controller.h
index 9352b26..17feabf 100644
--- a/src/core/lib/transport/pid_controller.h
+++ b/src/core/lib/transport/pid_controller.h
@@ -19,6 +19,10 @@
 #ifndef GRPC_CORE_LIB_TRANSPORT_PID_CONTROLLER_H
 #define GRPC_CORE_LIB_TRANSPORT_PID_CONTROLLER_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* \file Simple PID controller.
    Implements a proportional-integral-derivative controller.
    Used when we want to iteratively control a variable to converge some other
@@ -59,4 +63,8 @@
 /** Returns the last control value calculated */
 double grpc_pid_controller_last(grpc_pid_controller *pid_controller);
 
-#endif /* GRPC_CORE_LIB_TRANSPORT_PID_CONTROLLER_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_TRANSPORT_PID_CONTROLLER_H */
\ No newline at end of file
diff --git a/src/core/lib/transport/service_config.c b/src/core/lib/transport/service_config.cc
similarity index 100%
rename from src/core/lib/transport/service_config.c
rename to src/core/lib/transport/service_config.cc
diff --git a/src/core/lib/transport/service_config.h b/src/core/lib/transport/service_config.h
index 84110ab..c485f52 100644
--- a/src/core/lib/transport/service_config.h
+++ b/src/core/lib/transport/service_config.h
@@ -22,6 +22,10 @@
 #include "src/core/lib/json/json.h"
 #include "src/core/lib/slice/slice_hash_table.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct grpc_service_config grpc_service_config;
 
 grpc_service_config* grpc_service_config_create(const char* json_string);
@@ -59,4 +63,8 @@
                                    const grpc_slice_hash_table* table,
                                    grpc_slice path);
 
-#endif /* GRPC_CORE_LIB_TRANSPORT_SERVICE_CONFIG_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_TRANSPORT_SERVICE_CONFIG_H */
\ No newline at end of file
diff --git a/src/core/lib/transport/static_metadata.c b/src/core/lib/transport/static_metadata.cc
similarity index 100%
rename from src/core/lib/transport/static_metadata.c
rename to src/core/lib/transport/static_metadata.cc
diff --git a/src/core/lib/transport/static_metadata.h b/src/core/lib/transport/static_metadata.h
index f03a9d2..299410f 100644
--- a/src/core/lib/transport/static_metadata.h
+++ b/src/core/lib/transport/static_metadata.h
@@ -27,6 +27,10 @@
 #ifndef GRPC_CORE_LIB_TRANSPORT_STATIC_METADATA_H
 #define GRPC_CORE_LIB_TRANSPORT_STATIC_METADATA_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #include "src/core/lib/transport/metadata.h"
 
 #define GRPC_STATIC_MDSTR_COUNT 100
@@ -584,4 +588,7 @@
   (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table                                  \
                         [grpc_static_accept_stream_encoding_metadata[(algs)]], \
                     GRPC_MDELEM_STORAGE_STATIC))
+#ifdef __cplusplus
+}
+#endif
 #endif /* GRPC_CORE_LIB_TRANSPORT_STATIC_METADATA_H */
diff --git a/src/core/lib/transport/status_conversion.c b/src/core/lib/transport/status_conversion.cc
similarity index 100%
rename from src/core/lib/transport/status_conversion.c
rename to src/core/lib/transport/status_conversion.cc
diff --git a/src/core/lib/transport/status_conversion.h b/src/core/lib/transport/status_conversion.h
index e93f3df..b257998 100644
--- a/src/core/lib/transport/status_conversion.h
+++ b/src/core/lib/transport/status_conversion.h
@@ -22,6 +22,10 @@
 #include <grpc/grpc.h>
 #include "src/core/lib/transport/http2_errors.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Conversion of grpc status codes to http2 error codes (for RST_STREAM) */
 grpc_http2_error_code grpc_status_to_http2_error(grpc_status_code status);
 grpc_status_code grpc_http2_error_to_grpc_status(grpc_http2_error_code error,
@@ -31,4 +35,8 @@
 grpc_status_code grpc_http2_status_to_grpc_status(int status);
 int grpc_status_to_http2_status(grpc_status_code status);
 
-#endif /* GRPC_CORE_LIB_TRANSPORT_STATUS_CONVERSION_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_TRANSPORT_STATUS_CONVERSION_H */
\ No newline at end of file
diff --git a/src/core/lib/transport/timeout_encoding.c b/src/core/lib/transport/timeout_encoding.cc
similarity index 100%
rename from src/core/lib/transport/timeout_encoding.c
rename to src/core/lib/transport/timeout_encoding.cc
diff --git a/src/core/lib/transport/timeout_encoding.h b/src/core/lib/transport/timeout_encoding.h
index 7ff35c4..1f4e206 100644
--- a/src/core/lib/transport/timeout_encoding.h
+++ b/src/core/lib/transport/timeout_encoding.h
@@ -26,9 +26,17 @@
 
 #define GRPC_HTTP2_TIMEOUT_ENCODE_MIN_BUFSIZE (GPR_LTOA_MIN_BUFSIZE + 1)
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Encode/decode timeouts to the GRPC over HTTP/2 format;
    encoding may round up arbitrarily */
 void grpc_http2_encode_timeout(gpr_timespec timeout, char *buffer);
 int grpc_http2_decode_timeout(grpc_slice text, gpr_timespec *timeout);
 
-#endif /* GRPC_CORE_LIB_TRANSPORT_TIMEOUT_ENCODING_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_TRANSPORT_TIMEOUT_ENCODING_H */
\ No newline at end of file
diff --git a/src/core/lib/transport/transport.c b/src/core/lib/transport/transport.cc
similarity index 97%
rename from src/core/lib/transport/transport.c
rename to src/core/lib/transport/transport.cc
index 682a820..ab4f938 100644
--- a/src/core/lib/transport/transport.c
+++ b/src/core/lib/transport/transport.cc
@@ -110,10 +110,11 @@
 }
 
 static const grpc_slice_refcount_vtable stream_ref_slice_vtable = {
-    .ref = slice_stream_ref,
-    .unref = slice_stream_unref,
-    .eq = grpc_slice_default_eq_impl,
-    .hash = grpc_slice_default_hash_impl};
+    slice_stream_ref,            /* ref */
+    slice_stream_unref,          /* unref */
+    grpc_slice_default_eq_impl,  /* eq */
+    grpc_slice_default_hash_impl /* hash */
+};
 
 #ifndef NDEBUG
 void grpc_stream_ref_init(grpc_stream_refcount *refcount, int initial_refs,
diff --git a/src/core/lib/transport/transport_impl.h b/src/core/lib/transport/transport_impl.h
index bbae69c..41d34d3 100644
--- a/src/core/lib/transport/transport_impl.h
+++ b/src/core/lib/transport/transport_impl.h
@@ -21,6 +21,10 @@
 
 #include "src/core/lib/transport/transport.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct grpc_transport_vtable {
   /* Memory required for a single stream element - this is allocated by upper
      layers and initialized by the transport */
@@ -69,4 +73,8 @@
   const grpc_transport_vtable *vtable;
 };
 
-#endif /* GRPC_CORE_LIB_TRANSPORT_TRANSPORT_IMPL_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_TRANSPORT_TRANSPORT_IMPL_H */
\ No newline at end of file
diff --git a/src/core/lib/transport/transport_op_string.c b/src/core/lib/transport/transport_op_string.cc
similarity index 98%
rename from src/core/lib/transport/transport_op_string.c
rename to src/core/lib/transport/transport_op_string.cc
index 8586647..87fdf72 100644
--- a/src/core/lib/transport/transport_op_string.c
+++ b/src/core/lib/transport/transport_op_string.cc
@@ -16,8 +16,11 @@
  *
  */
 
+#include <grpc/support/port_platform.h>
+
 #include "src/core/lib/channel/channel_stack.h"
 
+#include <inttypes.h>
 #include <stdarg.h>
 #include <stdio.h>
 #include <string.h>
diff --git a/src/core/plugin_registry/grpc_cronet_plugin_registry.c b/src/core/plugin_registry/grpc_cronet_plugin_registry.cc
similarity index 67%
rename from src/core/plugin_registry/grpc_cronet_plugin_registry.c
rename to src/core/plugin_registry/grpc_cronet_plugin_registry.cc
index 1c09f54..e0422f6 100644
--- a/src/core/plugin_registry/grpc_cronet_plugin_registry.c
+++ b/src/core/plugin_registry/grpc_cronet_plugin_registry.cc
@@ -18,18 +18,18 @@
 
 #include <grpc/grpc.h>
 
-extern void grpc_http_filters_init(void);
-extern void grpc_http_filters_shutdown(void);
-extern void grpc_chttp2_plugin_init(void);
-extern void grpc_chttp2_plugin_shutdown(void);
-extern void grpc_deadline_filter_init(void);
-extern void grpc_deadline_filter_shutdown(void);
-extern void grpc_client_channel_init(void);
-extern void grpc_client_channel_shutdown(void);
-extern void grpc_tsi_gts_init(void);
-extern void grpc_tsi_gts_shutdown(void);
-extern void grpc_server_load_reporting_plugin_init(void);
-extern void grpc_server_load_reporting_plugin_shutdown(void);
+extern "C" void grpc_http_filters_init(void);
+extern "C" void grpc_http_filters_shutdown(void);
+extern "C" void grpc_chttp2_plugin_init(void);
+extern "C" void grpc_chttp2_plugin_shutdown(void);
+extern "C" void grpc_deadline_filter_init(void);
+extern "C" void grpc_deadline_filter_shutdown(void);
+extern "C" void grpc_client_channel_init(void);
+extern "C" void grpc_client_channel_shutdown(void);
+extern "C" void grpc_tsi_gts_init(void);
+extern "C" void grpc_tsi_gts_shutdown(void);
+extern "C" void grpc_server_load_reporting_plugin_init(void);
+extern "C" void grpc_server_load_reporting_plugin_shutdown(void);
 
 void grpc_register_built_in_plugins(void) {
   grpc_register_plugin(grpc_http_filters_init,
diff --git a/src/core/plugin_registry/grpc_plugin_registry.c b/src/core/plugin_registry/grpc_plugin_registry.c
deleted file mode 100644
index 9cacf3d..0000000
--- a/src/core/plugin_registry/grpc_plugin_registry.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- *
- * Copyright 2016 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include <grpc/grpc.h>
-
-extern void grpc_http_filters_init(void);
-extern void grpc_http_filters_shutdown(void);
-extern void grpc_chttp2_plugin_init(void);
-extern void grpc_chttp2_plugin_shutdown(void);
-extern void grpc_tsi_gts_init(void);
-extern void grpc_tsi_gts_shutdown(void);
-extern void grpc_deadline_filter_init(void);
-extern void grpc_deadline_filter_shutdown(void);
-extern void grpc_client_channel_init(void);
-extern void grpc_client_channel_shutdown(void);
-extern void grpc_inproc_plugin_init(void);
-extern void grpc_inproc_plugin_shutdown(void);
-extern void grpc_resolver_fake_init(void);
-extern void grpc_resolver_fake_shutdown(void);
-extern void grpc_lb_policy_grpclb_init(void);
-extern void grpc_lb_policy_grpclb_shutdown(void);
-extern void grpc_lb_policy_pick_first_init(void);
-extern void grpc_lb_policy_pick_first_shutdown(void);
-extern void grpc_lb_policy_round_robin_init(void);
-extern void grpc_lb_policy_round_robin_shutdown(void);
-extern void grpc_resolver_dns_ares_init(void);
-extern void grpc_resolver_dns_ares_shutdown(void);
-extern void grpc_resolver_dns_native_init(void);
-extern void grpc_resolver_dns_native_shutdown(void);
-extern void grpc_resolver_sockaddr_init(void);
-extern void grpc_resolver_sockaddr_shutdown(void);
-extern void grpc_server_load_reporting_plugin_init(void);
-extern void grpc_server_load_reporting_plugin_shutdown(void);
-extern void census_grpc_plugin_init(void);
-extern void census_grpc_plugin_shutdown(void);
-extern void grpc_max_age_filter_init(void);
-extern void grpc_max_age_filter_shutdown(void);
-extern void grpc_message_size_filter_init(void);
-extern void grpc_message_size_filter_shutdown(void);
-extern void grpc_workaround_cronet_compression_filter_init(void);
-extern void grpc_workaround_cronet_compression_filter_shutdown(void);
-
-void grpc_register_built_in_plugins(void) {
-  grpc_register_plugin(grpc_http_filters_init,
-                       grpc_http_filters_shutdown);
-  grpc_register_plugin(grpc_chttp2_plugin_init,
-                       grpc_chttp2_plugin_shutdown);
-  grpc_register_plugin(grpc_tsi_gts_init,
-                       grpc_tsi_gts_shutdown);
-  grpc_register_plugin(grpc_deadline_filter_init,
-                       grpc_deadline_filter_shutdown);
-  grpc_register_plugin(grpc_client_channel_init,
-                       grpc_client_channel_shutdown);
-  grpc_register_plugin(grpc_inproc_plugin_init,
-                       grpc_inproc_plugin_shutdown);
-  grpc_register_plugin(grpc_resolver_fake_init,
-                       grpc_resolver_fake_shutdown);
-  grpc_register_plugin(grpc_lb_policy_grpclb_init,
-                       grpc_lb_policy_grpclb_shutdown);
-  grpc_register_plugin(grpc_lb_policy_pick_first_init,
-                       grpc_lb_policy_pick_first_shutdown);
-  grpc_register_plugin(grpc_lb_policy_round_robin_init,
-                       grpc_lb_policy_round_robin_shutdown);
-  grpc_register_plugin(grpc_resolver_dns_ares_init,
-                       grpc_resolver_dns_ares_shutdown);
-  grpc_register_plugin(grpc_resolver_dns_native_init,
-                       grpc_resolver_dns_native_shutdown);
-  grpc_register_plugin(grpc_resolver_sockaddr_init,
-                       grpc_resolver_sockaddr_shutdown);
-  grpc_register_plugin(grpc_server_load_reporting_plugin_init,
-                       grpc_server_load_reporting_plugin_shutdown);
-  grpc_register_plugin(census_grpc_plugin_init,
-                       census_grpc_plugin_shutdown);
-  grpc_register_plugin(grpc_max_age_filter_init,
-                       grpc_max_age_filter_shutdown);
-  grpc_register_plugin(grpc_message_size_filter_init,
-                       grpc_message_size_filter_shutdown);
-  grpc_register_plugin(grpc_workaround_cronet_compression_filter_init,
-                       grpc_workaround_cronet_compression_filter_shutdown);
-}
diff --git a/src/core/plugin_registry/grpc_plugin_registry.cc b/src/core/plugin_registry/grpc_plugin_registry.cc
new file mode 100644
index 0000000..2d332e2
--- /dev/null
+++ b/src/core/plugin_registry/grpc_plugin_registry.cc
@@ -0,0 +1,95 @@
+/*
+ *
+ * Copyright 2016 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <grpc/grpc.h>
+
+extern "C" void grpc_http_filters_init(void);
+extern "C" void grpc_http_filters_shutdown(void);
+extern "C" void grpc_chttp2_plugin_init(void);
+extern "C" void grpc_chttp2_plugin_shutdown(void);
+extern "C" void grpc_tsi_gts_init(void);
+extern "C" void grpc_tsi_gts_shutdown(void);
+extern "C" void grpc_deadline_filter_init(void);
+extern "C" void grpc_deadline_filter_shutdown(void);
+extern "C" void grpc_client_channel_init(void);
+extern "C" void grpc_client_channel_shutdown(void);
+extern "C" void grpc_inproc_plugin_init(void);
+extern "C" void grpc_inproc_plugin_shutdown(void);
+extern "C" void grpc_resolver_fake_init(void);
+extern "C" void grpc_resolver_fake_shutdown(void);
+extern "C" void grpc_lb_policy_grpclb_init(void);
+extern "C" void grpc_lb_policy_grpclb_shutdown(void);
+extern "C" void grpc_lb_policy_pick_first_init(void);
+extern "C" void grpc_lb_policy_pick_first_shutdown(void);
+extern "C" void grpc_lb_policy_round_robin_init(void);
+extern "C" void grpc_lb_policy_round_robin_shutdown(void);
+extern "C" void grpc_resolver_dns_ares_init(void);
+extern "C" void grpc_resolver_dns_ares_shutdown(void);
+extern "C" void grpc_resolver_dns_native_init(void);
+extern "C" void grpc_resolver_dns_native_shutdown(void);
+extern "C" void grpc_resolver_sockaddr_init(void);
+extern "C" void grpc_resolver_sockaddr_shutdown(void);
+extern "C" void grpc_server_load_reporting_plugin_init(void);
+extern "C" void grpc_server_load_reporting_plugin_shutdown(void);
+extern "C" void census_grpc_plugin_init(void);
+extern "C" void census_grpc_plugin_shutdown(void);
+extern "C" void grpc_max_age_filter_init(void);
+extern "C" void grpc_max_age_filter_shutdown(void);
+extern "C" void grpc_message_size_filter_init(void);
+extern "C" void grpc_message_size_filter_shutdown(void);
+extern "C" void grpc_workaround_cronet_compression_filter_init(void);
+extern "C" void grpc_workaround_cronet_compression_filter_shutdown(void);
+
+void grpc_register_built_in_plugins(void) {
+  grpc_register_plugin(grpc_http_filters_init,
+                       grpc_http_filters_shutdown);
+  grpc_register_plugin(grpc_chttp2_plugin_init,
+                       grpc_chttp2_plugin_shutdown);
+  grpc_register_plugin(grpc_tsi_gts_init,
+                       grpc_tsi_gts_shutdown);
+  grpc_register_plugin(grpc_deadline_filter_init,
+                       grpc_deadline_filter_shutdown);
+  grpc_register_plugin(grpc_client_channel_init,
+                       grpc_client_channel_shutdown);
+  grpc_register_plugin(grpc_inproc_plugin_init,
+                       grpc_inproc_plugin_shutdown);
+  grpc_register_plugin(grpc_resolver_fake_init,
+                       grpc_resolver_fake_shutdown);
+  grpc_register_plugin(grpc_lb_policy_grpclb_init,
+                       grpc_lb_policy_grpclb_shutdown);
+  grpc_register_plugin(grpc_lb_policy_pick_first_init,
+                       grpc_lb_policy_pick_first_shutdown);
+  grpc_register_plugin(grpc_lb_policy_round_robin_init,
+                       grpc_lb_policy_round_robin_shutdown);
+  grpc_register_plugin(grpc_resolver_dns_ares_init,
+                       grpc_resolver_dns_ares_shutdown);
+  grpc_register_plugin(grpc_resolver_dns_native_init,
+                       grpc_resolver_dns_native_shutdown);
+  grpc_register_plugin(grpc_resolver_sockaddr_init,
+                       grpc_resolver_sockaddr_shutdown);
+  grpc_register_plugin(grpc_server_load_reporting_plugin_init,
+                       grpc_server_load_reporting_plugin_shutdown);
+  grpc_register_plugin(census_grpc_plugin_init,
+                       census_grpc_plugin_shutdown);
+  grpc_register_plugin(grpc_max_age_filter_init,
+                       grpc_max_age_filter_shutdown);
+  grpc_register_plugin(grpc_message_size_filter_init,
+                       grpc_message_size_filter_shutdown);
+  grpc_register_plugin(grpc_workaround_cronet_compression_filter_init,
+                       grpc_workaround_cronet_compression_filter_shutdown);
+}
diff --git a/src/core/plugin_registry/grpc_unsecure_plugin_registry.c b/src/core/plugin_registry/grpc_unsecure_plugin_registry.c
deleted file mode 100644
index 7b90d79..0000000
--- a/src/core/plugin_registry/grpc_unsecure_plugin_registry.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- *
- * Copyright 2016 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include <grpc/grpc.h>
-
-extern void grpc_http_filters_init(void);
-extern void grpc_http_filters_shutdown(void);
-extern void grpc_chttp2_plugin_init(void);
-extern void grpc_chttp2_plugin_shutdown(void);
-extern void grpc_deadline_filter_init(void);
-extern void grpc_deadline_filter_shutdown(void);
-extern void grpc_client_channel_init(void);
-extern void grpc_client_channel_shutdown(void);
-extern void grpc_inproc_plugin_init(void);
-extern void grpc_inproc_plugin_shutdown(void);
-extern void grpc_resolver_dns_ares_init(void);
-extern void grpc_resolver_dns_ares_shutdown(void);
-extern void grpc_resolver_dns_native_init(void);
-extern void grpc_resolver_dns_native_shutdown(void);
-extern void grpc_resolver_sockaddr_init(void);
-extern void grpc_resolver_sockaddr_shutdown(void);
-extern void grpc_resolver_fake_init(void);
-extern void grpc_resolver_fake_shutdown(void);
-extern void grpc_server_load_reporting_plugin_init(void);
-extern void grpc_server_load_reporting_plugin_shutdown(void);
-extern void grpc_lb_policy_grpclb_init(void);
-extern void grpc_lb_policy_grpclb_shutdown(void);
-extern void grpc_lb_policy_pick_first_init(void);
-extern void grpc_lb_policy_pick_first_shutdown(void);
-extern void grpc_lb_policy_round_robin_init(void);
-extern void grpc_lb_policy_round_robin_shutdown(void);
-extern void census_grpc_plugin_init(void);
-extern void census_grpc_plugin_shutdown(void);
-extern void grpc_max_age_filter_init(void);
-extern void grpc_max_age_filter_shutdown(void);
-extern void grpc_message_size_filter_init(void);
-extern void grpc_message_size_filter_shutdown(void);
-extern void grpc_workaround_cronet_compression_filter_init(void);
-extern void grpc_workaround_cronet_compression_filter_shutdown(void);
-
-void grpc_register_built_in_plugins(void) {
-  grpc_register_plugin(grpc_http_filters_init,
-                       grpc_http_filters_shutdown);
-  grpc_register_plugin(grpc_chttp2_plugin_init,
-                       grpc_chttp2_plugin_shutdown);
-  grpc_register_plugin(grpc_deadline_filter_init,
-                       grpc_deadline_filter_shutdown);
-  grpc_register_plugin(grpc_client_channel_init,
-                       grpc_client_channel_shutdown);
-  grpc_register_plugin(grpc_inproc_plugin_init,
-                       grpc_inproc_plugin_shutdown);
-  grpc_register_plugin(grpc_resolver_dns_ares_init,
-                       grpc_resolver_dns_ares_shutdown);
-  grpc_register_plugin(grpc_resolver_dns_native_init,
-                       grpc_resolver_dns_native_shutdown);
-  grpc_register_plugin(grpc_resolver_sockaddr_init,
-                       grpc_resolver_sockaddr_shutdown);
-  grpc_register_plugin(grpc_resolver_fake_init,
-                       grpc_resolver_fake_shutdown);
-  grpc_register_plugin(grpc_server_load_reporting_plugin_init,
-                       grpc_server_load_reporting_plugin_shutdown);
-  grpc_register_plugin(grpc_lb_policy_grpclb_init,
-                       grpc_lb_policy_grpclb_shutdown);
-  grpc_register_plugin(grpc_lb_policy_pick_first_init,
-                       grpc_lb_policy_pick_first_shutdown);
-  grpc_register_plugin(grpc_lb_policy_round_robin_init,
-                       grpc_lb_policy_round_robin_shutdown);
-  grpc_register_plugin(census_grpc_plugin_init,
-                       census_grpc_plugin_shutdown);
-  grpc_register_plugin(grpc_max_age_filter_init,
-                       grpc_max_age_filter_shutdown);
-  grpc_register_plugin(grpc_message_size_filter_init,
-                       grpc_message_size_filter_shutdown);
-  grpc_register_plugin(grpc_workaround_cronet_compression_filter_init,
-                       grpc_workaround_cronet_compression_filter_shutdown);
-}
diff --git a/src/core/plugin_registry/grpc_unsecure_plugin_registry.cc b/src/core/plugin_registry/grpc_unsecure_plugin_registry.cc
new file mode 100644
index 0000000..7821858
--- /dev/null
+++ b/src/core/plugin_registry/grpc_unsecure_plugin_registry.cc
@@ -0,0 +1,91 @@
+/*
+ *
+ * Copyright 2016 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <grpc/grpc.h>
+
+extern "C" void grpc_http_filters_init(void);
+extern "C" void grpc_http_filters_shutdown(void);
+extern "C" void grpc_chttp2_plugin_init(void);
+extern "C" void grpc_chttp2_plugin_shutdown(void);
+extern "C" void grpc_deadline_filter_init(void);
+extern "C" void grpc_deadline_filter_shutdown(void);
+extern "C" void grpc_client_channel_init(void);
+extern "C" void grpc_client_channel_shutdown(void);
+extern "C" void grpc_inproc_plugin_init(void);
+extern "C" void grpc_inproc_plugin_shutdown(void);
+extern "C" void grpc_resolver_dns_ares_init(void);
+extern "C" void grpc_resolver_dns_ares_shutdown(void);
+extern "C" void grpc_resolver_dns_native_init(void);
+extern "C" void grpc_resolver_dns_native_shutdown(void);
+extern "C" void grpc_resolver_sockaddr_init(void);
+extern "C" void grpc_resolver_sockaddr_shutdown(void);
+extern "C" void grpc_resolver_fake_init(void);
+extern "C" void grpc_resolver_fake_shutdown(void);
+extern "C" void grpc_server_load_reporting_plugin_init(void);
+extern "C" void grpc_server_load_reporting_plugin_shutdown(void);
+extern "C" void grpc_lb_policy_grpclb_init(void);
+extern "C" void grpc_lb_policy_grpclb_shutdown(void);
+extern "C" void grpc_lb_policy_pick_first_init(void);
+extern "C" void grpc_lb_policy_pick_first_shutdown(void);
+extern "C" void grpc_lb_policy_round_robin_init(void);
+extern "C" void grpc_lb_policy_round_robin_shutdown(void);
+extern "C" void census_grpc_plugin_init(void);
+extern "C" void census_grpc_plugin_shutdown(void);
+extern "C" void grpc_max_age_filter_init(void);
+extern "C" void grpc_max_age_filter_shutdown(void);
+extern "C" void grpc_message_size_filter_init(void);
+extern "C" void grpc_message_size_filter_shutdown(void);
+extern "C" void grpc_workaround_cronet_compression_filter_init(void);
+extern "C" void grpc_workaround_cronet_compression_filter_shutdown(void);
+
+void grpc_register_built_in_plugins(void) {
+  grpc_register_plugin(grpc_http_filters_init,
+                       grpc_http_filters_shutdown);
+  grpc_register_plugin(grpc_chttp2_plugin_init,
+                       grpc_chttp2_plugin_shutdown);
+  grpc_register_plugin(grpc_deadline_filter_init,
+                       grpc_deadline_filter_shutdown);
+  grpc_register_plugin(grpc_client_channel_init,
+                       grpc_client_channel_shutdown);
+  grpc_register_plugin(grpc_inproc_plugin_init,
+                       grpc_inproc_plugin_shutdown);
+  grpc_register_plugin(grpc_resolver_dns_ares_init,
+                       grpc_resolver_dns_ares_shutdown);
+  grpc_register_plugin(grpc_resolver_dns_native_init,
+                       grpc_resolver_dns_native_shutdown);
+  grpc_register_plugin(grpc_resolver_sockaddr_init,
+                       grpc_resolver_sockaddr_shutdown);
+  grpc_register_plugin(grpc_resolver_fake_init,
+                       grpc_resolver_fake_shutdown);
+  grpc_register_plugin(grpc_server_load_reporting_plugin_init,
+                       grpc_server_load_reporting_plugin_shutdown);
+  grpc_register_plugin(grpc_lb_policy_grpclb_init,
+                       grpc_lb_policy_grpclb_shutdown);
+  grpc_register_plugin(grpc_lb_policy_pick_first_init,
+                       grpc_lb_policy_pick_first_shutdown);
+  grpc_register_plugin(grpc_lb_policy_round_robin_init,
+                       grpc_lb_policy_round_robin_shutdown);
+  grpc_register_plugin(census_grpc_plugin_init,
+                       census_grpc_plugin_shutdown);
+  grpc_register_plugin(grpc_max_age_filter_init,
+                       grpc_max_age_filter_shutdown);
+  grpc_register_plugin(grpc_message_size_filter_init,
+                       grpc_message_size_filter_shutdown);
+  grpc_register_plugin(grpc_workaround_cronet_compression_filter_init,
+                       grpc_workaround_cronet_compression_filter_shutdown);
+}
diff --git a/src/core/tsi/fake_transport_security.c b/src/core/tsi/fake_transport_security.cc
similarity index 95%
rename from src/core/tsi/fake_transport_security.c
rename to src/core/tsi/fake_transport_security.cc
index 64043fe..349dcf5 100644
--- a/src/core/tsi/fake_transport_security.c
+++ b/src/core/tsi/fake_transport_security.cc
@@ -98,11 +98,10 @@
 
 static tsi_result tsi_fake_handshake_message_from_string(
     const char *msg_string, tsi_fake_handshake_message *msg) {
-  tsi_fake_handshake_message i;
-  for (i = 0; i < TSI_FAKE_HANDSHAKE_MESSAGE_MAX; i++) {
+  for (int i = 0; i < TSI_FAKE_HANDSHAKE_MESSAGE_MAX; i++) {
     if (strncmp(msg_string, tsi_fake_handshake_message_strings[i],
                 strlen(tsi_fake_handshake_message_strings[i])) == 0) {
-      *msg = i;
+      *msg = (tsi_fake_handshake_message)i;
       return TSI_OK;
     }
   }
@@ -155,9 +154,10 @@
 static void tsi_fake_frame_ensure_size(tsi_fake_frame *frame) {
   if (frame->data == NULL) {
     frame->allocated_size = frame->size;
-    frame->data = gpr_malloc(frame->allocated_size);
+    frame->data = (unsigned char *)gpr_malloc(frame->allocated_size);
   } else if (frame->size > frame->allocated_size) {
-    unsigned char *new_data = gpr_realloc(frame->data, frame->size);
+    unsigned char *new_data =
+        (unsigned char *)gpr_realloc(frame->data, frame->size);
     frame->data = new_data;
     frame->allocated_size = frame->size;
   }
@@ -176,7 +176,7 @@
   if (frame->needs_draining) return TSI_INTERNAL_ERROR;
   if (frame->data == NULL) {
     frame->allocated_size = TSI_FAKE_FRAME_INITIAL_ALLOCATED_SIZE;
-    frame->data = gpr_malloc(frame->allocated_size);
+    frame->data = (unsigned char *)gpr_malloc(frame->allocated_size);
   }
 
   if (frame->offset < TSI_FAKE_FRAME_HEADER_SIZE) {
@@ -538,10 +538,11 @@
       handshaker_result == NULL) {
     return TSI_INVALID_ARGUMENT;
   }
-  fake_handshaker_result *result = gpr_zalloc(sizeof(*result));
+  fake_handshaker_result *result =
+      (fake_handshaker_result *)gpr_zalloc(sizeof(*result));
   result->base.vtable = &handshaker_result_vtable;
   if (unused_bytes_size > 0) {
-    result->unused_bytes = gpr_malloc(unused_bytes_size);
+    result->unused_bytes = (unsigned char *)gpr_malloc(unused_bytes_size);
     memcpy(result->unused_bytes, unused_bytes, unused_bytes_size);
   }
   result->unused_bytes_size = unused_bytes_size;
@@ -561,7 +562,7 @@
   }
   if (!impl->outgoing_frame.needs_draining) {
     tsi_fake_handshake_message next_message_to_send =
-        impl->next_message_to_send + 2;
+        (tsi_fake_handshake_message)(impl->next_message_to_send + 2);
     const char *msg_string =
         tsi_fake_handshake_message_to_string(impl->next_message_to_send);
     result = tsi_fake_frame_set_data((unsigned char *)msg_string,
@@ -596,7 +597,8 @@
     tsi_handshaker *self, const unsigned char *bytes, size_t *bytes_size) {
   tsi_result result = TSI_OK;
   tsi_fake_handshaker *impl = (tsi_fake_handshaker *)self;
-  tsi_fake_handshake_message expected_msg = impl->next_message_to_send - 1;
+  tsi_fake_handshake_message expected_msg =
+      (tsi_fake_handshake_message)(impl->next_message_to_send - 1);
   tsi_fake_handshake_message received_msg;
 
   if (!impl->needs_incoming_message || impl->result == TSI_OK) {
@@ -681,8 +683,8 @@
     if (result == TSI_INCOMPLETE_DATA) {
       handshaker->outgoing_bytes_buffer_size *= 2;
       handshaker->outgoing_bytes_buffer =
-          gpr_realloc(handshaker->outgoing_bytes_buffer,
-                      handshaker->outgoing_bytes_buffer_size);
+          (unsigned char *)gpr_realloc(handshaker->outgoing_bytes_buffer,
+                                       handshaker->outgoing_bytes_buffer_size);
     }
   } while (result == TSI_INCOMPLETE_DATA);
   if (result != TSI_OK) return result;
@@ -723,13 +725,14 @@
 };
 
 tsi_handshaker *tsi_create_fake_handshaker(int is_client) {
-  tsi_fake_handshaker *impl = gpr_zalloc(sizeof(*impl));
+  tsi_fake_handshaker *impl = (tsi_fake_handshaker *)gpr_zalloc(sizeof(*impl));
   impl->base.vtable = &handshaker_vtable;
   impl->is_client = is_client;
   impl->result = TSI_HANDSHAKE_IN_PROGRESS;
   impl->outgoing_bytes_buffer_size =
       TSI_FAKE_HANDSHAKER_OUTGOING_BUFFER_INITIAL_SIZE;
-  impl->outgoing_bytes_buffer = gpr_malloc(impl->outgoing_bytes_buffer_size);
+  impl->outgoing_bytes_buffer =
+      (unsigned char *)gpr_malloc(impl->outgoing_bytes_buffer_size);
   if (is_client) {
     impl->needs_incoming_message = 0;
     impl->next_message_to_send = TSI_FAKE_CLIENT_INIT;
@@ -742,7 +745,8 @@
 
 tsi_frame_protector *tsi_create_fake_frame_protector(
     size_t *max_protected_frame_size) {
-  tsi_fake_frame_protector *impl = gpr_zalloc(sizeof(*impl));
+  tsi_fake_frame_protector *impl =
+      (tsi_fake_frame_protector *)gpr_zalloc(sizeof(*impl));
   impl->max_frame_size = (max_protected_frame_size == NULL)
                              ? TSI_FAKE_DEFAULT_FRAME_SIZE
                              : *max_protected_frame_size;
@@ -752,7 +756,8 @@
 
 tsi_zero_copy_grpc_protector *tsi_create_fake_zero_copy_grpc_protector(
     size_t *max_protected_frame_size) {
-  tsi_fake_zero_copy_grpc_protector *impl = gpr_zalloc(sizeof(*impl));
+  tsi_fake_zero_copy_grpc_protector *impl =
+      (tsi_fake_zero_copy_grpc_protector *)gpr_zalloc(sizeof(*impl));
   grpc_slice_buffer_init(&impl->header_sb);
   grpc_slice_buffer_init(&impl->protected_sb);
   impl->max_frame_size = (max_protected_frame_size == NULL)
diff --git a/src/core/tsi/gts_transport_security.c b/src/core/tsi/gts_transport_security.cc
similarity index 92%
rename from src/core/tsi/gts_transport_security.c
rename to src/core/tsi/gts_transport_security.cc
index e2ac685..d37f3bf 100644
--- a/src/core/tsi/gts_transport_security.c
+++ b/src/core/tsi/gts_transport_security.cc
@@ -24,12 +24,12 @@
 
 gts_shared_resource *gts_get_shared_resource(void) { return &g_gts_resource; }
 
-void grpc_tsi_gts_init() {
+extern "C" void grpc_tsi_gts_init() {
   memset(&g_gts_resource, 0, sizeof(gts_shared_resource));
   gpr_mu_init(&g_gts_resource.mu);
 }
 
-void grpc_tsi_gts_shutdown() {
+extern "C" void grpc_tsi_gts_shutdown() {
   gpr_mu_destroy(&g_gts_resource.mu);
   if (g_gts_resource.cq == NULL) {
     return;
diff --git a/src/core/tsi/gts_transport_security.h b/src/core/tsi/gts_transport_security.h
index 538e103..b988c3f 100644
--- a/src/core/tsi/gts_transport_security.h
+++ b/src/core/tsi/gts_transport_security.h
@@ -23,6 +23,10 @@
 #include <grpc/support/sync.h>
 #include <grpc/support/thd.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct gts_shared_resource {
   gpr_thd_id thread_id;
   grpc_channel *channel;
@@ -34,4 +38,8 @@
  *    TSI handshakes. */
 gts_shared_resource *gts_get_shared_resource(void);
 
-#endif /* GRPC_CORE_TSI_GTS_TRANSPORT_SECURITY_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_TSI_GTS_TRANSPORT_SECURITY_H */
\ No newline at end of file
diff --git a/src/core/tsi/ssl_transport_security.c b/src/core/tsi/ssl_transport_security.cc
similarity index 97%
rename from src/core/tsi/ssl_transport_security.c
rename to src/core/tsi/ssl_transport_security.cc
index 7ebf9dd..b1c69e9 100644
--- a/src/core/tsi/ssl_transport_security.c
+++ b/src/core/tsi/ssl_transport_security.cc
@@ -39,12 +39,14 @@
 #include <grpc/support/thd.h>
 #include <grpc/support/useful.h>
 
+extern "C" {
 #include <openssl/bio.h>
 #include <openssl/crypto.h> /* For OPENSSL_free */
 #include <openssl/err.h>
 #include <openssl/ssl.h>
 #include <openssl/x509.h>
 #include <openssl/x509v3.h>
+}
 
 #include "src/core/tsi/ssl_types.h"
 #include "src/core/tsi/transport_security.h"
@@ -135,7 +137,7 @@
   OpenSSL_add_all_algorithms();
   num_locks = CRYPTO_num_locks();
   GPR_ASSERT(num_locks > 0);
-  openssl_mutexes = gpr_malloc((size_t)num_locks * sizeof(gpr_mu));
+  openssl_mutexes = (gpr_mu *)gpr_malloc((size_t)num_locks * sizeof(gpr_mu));
   for (i = 0; i < CRYPTO_num_locks(); i++) {
     gpr_mu_init(&openssl_mutexes[i]);
   }
@@ -361,7 +363,7 @@
                                  tsi_peer *peer) {
   /* TODO(jboeuf): Maybe add more properties. */
   GENERAL_NAMES *subject_alt_names =
-      X509_get_ext_d2i(cert, NID_subject_alt_name, 0, 0);
+      (GENERAL_NAMES *)X509_get_ext_d2i(cert, NID_subject_alt_name, 0, 0);
   int subject_alt_name_count = (subject_alt_names != NULL)
                                    ? (int)sk_GENERAL_NAME_num(subject_alt_names)
                                    : 0;
@@ -479,7 +481,7 @@
   if (pem == NULL) return TSI_OUT_OF_RESOURCES;
 
   do {
-    certificate = PEM_read_bio_X509_AUX(pem, NULL, NULL, "");
+    certificate = PEM_read_bio_X509_AUX(pem, NULL, NULL, (void *)"");
     if (certificate == NULL) {
       result = TSI_INVALID_ARGUMENT;
       break;
@@ -489,7 +491,8 @@
       break;
     }
     while (1) {
-      X509 *certificate_authority = PEM_read_bio_X509(pem, NULL, NULL, "");
+      X509 *certificate_authority =
+          PEM_read_bio_X509(pem, NULL, NULL, (void *)"");
       if (certificate_authority == NULL) {
         ERR_clear_error();
         break; /* Done reading. */
@@ -520,7 +523,7 @@
   pem = BIO_new_mem_buf((void *)pem_key, (int)pem_key_size);
   if (pem == NULL) return TSI_OUT_OF_RESOURCES;
   do {
-    private_key = PEM_read_bio_PrivateKey(pem, NULL, NULL, "");
+    private_key = PEM_read_bio_PrivateKey(pem, NULL, NULL, (void *)"");
     if (private_key == NULL) {
       result = TSI_INVALID_ARGUMENT;
       break;
@@ -559,7 +562,7 @@
   }
 
   while (1) {
-    root = PEM_read_bio_X509_AUX(pem, NULL, NULL, "");
+    root = PEM_read_bio_X509_AUX(pem, NULL, NULL, (void *)"");
     if (root == NULL) {
       ERR_clear_error();
       break; /* We're at the end of stream. */
@@ -655,7 +658,7 @@
   pem = BIO_new_mem_buf((void *)pem_cert, (int)strlen(pem_cert));
   if (pem == NULL) return TSI_OUT_OF_RESOURCES;
 
-  cert = PEM_read_bio_X509(pem, NULL, NULL, "");
+  cert = PEM_read_bio_X509(pem, NULL, NULL, (void *)"");
   if (cert == NULL) {
     gpr_log(GPR_ERROR, "Invalid certificate");
     result = TSI_INVALID_ARGUMENT;
@@ -684,7 +687,7 @@
     }
     *protocol_name_list_length += length + 1;
   }
-  *protocol_name_list = gpr_malloc(*protocol_name_list_length);
+  *protocol_name_list = (unsigned char *)gpr_malloc(*protocol_name_list_length);
   if (*protocol_name_list == NULL) return TSI_OUT_OF_RESOURCES;
   current = *protocol_name_list;
   for (i = 0; i < num_alpn_protocols; i++) {
@@ -998,8 +1001,8 @@
   }
   if (alpn_selected != NULL) {
     size_t i;
-    tsi_peer_property *new_properties =
-        gpr_zalloc(sizeof(*new_properties) * (peer->property_count + 1));
+    tsi_peer_property *new_properties = (tsi_peer_property *)gpr_zalloc(
+        sizeof(*new_properties) * (peer->property_count + 1));
     for (i = 0; i < peer->property_count; i++) {
       new_properties[i] = peer->properties[i];
     }
@@ -1023,7 +1026,8 @@
   size_t actual_max_output_protected_frame_size =
       TSI_SSL_MAX_PROTECTED_FRAME_SIZE_UPPER_BOUND;
   tsi_ssl_handshaker *impl = (tsi_ssl_handshaker *)self;
-  tsi_ssl_frame_protector *protector_impl = gpr_zalloc(sizeof(*protector_impl));
+  tsi_ssl_frame_protector *protector_impl =
+      (tsi_ssl_frame_protector *)gpr_zalloc(sizeof(*protector_impl));
 
   if (max_output_protected_frame_size != NULL) {
     if (*max_output_protected_frame_size >
@@ -1039,7 +1043,8 @@
   }
   protector_impl->buffer_size =
       actual_max_output_protected_frame_size - TSI_SSL_MAX_PROTECTION_OVERHEAD;
-  protector_impl->buffer = gpr_malloc(protector_impl->buffer_size);
+  protector_impl->buffer =
+      (unsigned char *)gpr_malloc(protector_impl->buffer_size);
   if (protector_impl->buffer == NULL) {
     gpr_log(GPR_ERROR,
             "Could not allocated buffer for tsi_ssl_frame_protector.");
@@ -1130,7 +1135,7 @@
     SSL_set_accept_state(ssl);
   }
 
-  impl = gpr_zalloc(sizeof(*impl));
+  impl = (tsi_ssl_handshaker *)gpr_zalloc(sizeof(*impl));
   impl->ssl = ssl;
   impl->into_ssl = into_ssl;
   impl->from_ssl = from_ssl;
@@ -1359,7 +1364,7 @@
     return TSI_INVALID_ARGUMENT;
   }
 
-  impl = gpr_zalloc(sizeof(*impl));
+  impl = (tsi_ssl_client_handshaker_factory *)gpr_zalloc(sizeof(*impl));
   tsi_ssl_handshaker_factory_init(&impl->base);
   impl->base.vtable = &client_handshaker_factory_vtable;
 
@@ -1444,13 +1449,14 @@
     return TSI_INVALID_ARGUMENT;
   }
 
-  impl = gpr_zalloc(sizeof(*impl));
+  impl = (tsi_ssl_server_handshaker_factory *)gpr_zalloc(sizeof(*impl));
   tsi_ssl_handshaker_factory_init(&impl->base);
   impl->base.vtable = &server_handshaker_factory_vtable;
 
-  impl->ssl_contexts = gpr_zalloc(num_key_cert_pairs * sizeof(SSL_CTX *));
+  impl->ssl_contexts =
+      (SSL_CTX **)gpr_zalloc(num_key_cert_pairs * sizeof(SSL_CTX *));
   impl->ssl_context_x509_subject_names =
-      gpr_zalloc(num_key_cert_pairs * sizeof(tsi_peer));
+      (tsi_peer *)gpr_zalloc(num_key_cert_pairs * sizeof(tsi_peer));
   if (impl->ssl_contexts == NULL ||
       impl->ssl_context_x509_subject_names == NULL) {
     tsi_ssl_handshaker_factory_unref(&impl->base);
diff --git a/src/core/tsi/ssl_types.h b/src/core/tsi/ssl_types.h
index 3788643..e0e9670 100644
--- a/src/core/tsi/ssl_types.h
+++ b/src/core/tsi/ssl_types.h
@@ -19,6 +19,10 @@
 #ifndef GRPC_CORE_TSI_SSL_TYPES_H
 #define GRPC_CORE_TSI_SSL_TYPES_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* A collection of macros to cast between various integer types that are
  * used differently between BoringSSL and OpenSSL:
  * TSI_INT_AS_SIZE(x):  convert 'int x' to a length parameter for an OpenSSL
@@ -37,4 +41,8 @@
 #define TSI_SIZE_AS_SIZE(x) ((int)(x))
 #endif
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_CORE_TSI_SSL_TYPES_H */
diff --git a/src/core/tsi/transport_security.c b/src/core/tsi/transport_security.cc
similarity index 98%
rename from src/core/tsi/transport_security.c
rename to src/core/tsi/transport_security.cc
index 7621307..21bd8eb 100644
--- a/src/core/tsi/transport_security.c
+++ b/src/core/tsi/transport_security.cc
@@ -282,7 +282,7 @@
   *property = tsi_init_peer_property();
   if (name != NULL) property->name = gpr_strdup(name);
   if (value_length > 0) {
-    property->value.data = gpr_zalloc(value_length);
+    property->value.data = (char *)gpr_zalloc(value_length);
     property->value.length = value_length;
   }
   return TSI_OK;
@@ -310,7 +310,8 @@
 tsi_result tsi_construct_peer(size_t property_count, tsi_peer *peer) {
   memset(peer, 0, sizeof(tsi_peer));
   if (property_count > 0) {
-    peer->properties = gpr_zalloc(property_count * sizeof(tsi_peer_property));
+    peer->properties = (tsi_peer_property *)gpr_zalloc(
+        property_count * sizeof(tsi_peer_property));
     peer->property_count = property_count;
   }
   return TSI_OK;
diff --git a/src/core/tsi/transport_security_adapter.c b/src/core/tsi/transport_security_adapter.cc
similarity index 93%
rename from src/core/tsi/transport_security_adapter.c
rename to src/core/tsi/transport_security_adapter.cc
index 1c2a57b..e399e42 100644
--- a/src/core/tsi/transport_security_adapter.c
+++ b/src/core/tsi/transport_security_adapter.cc
@@ -80,12 +80,13 @@
   if (wrapped == NULL || (unused_bytes_size > 0 && unused_bytes == NULL)) {
     return TSI_INVALID_ARGUMENT;
   }
-  tsi_adapter_handshaker_result *impl = gpr_zalloc(sizeof(*impl));
+  tsi_adapter_handshaker_result *impl =
+      (tsi_adapter_handshaker_result *)gpr_zalloc(sizeof(*impl));
   impl->base.vtable = &result_vtable;
   impl->wrapped = wrapped;
   impl->unused_bytes_size = unused_bytes_size;
   if (unused_bytes_size > 0) {
-    impl->unused_bytes = gpr_malloc(unused_bytes_size);
+    impl->unused_bytes = (unsigned char *)gpr_malloc(unused_bytes_size);
     memcpy(impl->unused_bytes, unused_bytes, unused_bytes_size);
   } else {
     impl->unused_bytes = NULL;
@@ -172,8 +173,8 @@
     offset += to_send_size;
     if (status == TSI_INCOMPLETE_DATA) {
       impl->adapter_buffer_size *= 2;
-      impl->adapter_buffer =
-          gpr_realloc(impl->adapter_buffer, impl->adapter_buffer_size);
+      impl->adapter_buffer = (unsigned char *)gpr_realloc(
+          impl->adapter_buffer, impl->adapter_buffer_size);
     }
   } while (status == TSI_INCOMPLETE_DATA);
   if (status != TSI_OK) return status;
@@ -209,11 +210,12 @@
 
 tsi_handshaker *tsi_create_adapter_handshaker(tsi_handshaker *wrapped) {
   GPR_ASSERT(wrapped != NULL);
-  tsi_adapter_handshaker *impl = gpr_zalloc(sizeof(*impl));
+  tsi_adapter_handshaker *impl =
+      (tsi_adapter_handshaker *)gpr_zalloc(sizeof(*impl));
   impl->base.vtable = &handshaker_vtable;
   impl->wrapped = wrapped;
   impl->adapter_buffer_size = TSI_ADAPTER_INITIAL_BUFFER_SIZE;
-  impl->adapter_buffer = gpr_malloc(impl->adapter_buffer_size);
+  impl->adapter_buffer = (unsigned char *)gpr_malloc(impl->adapter_buffer_size);
   return &impl->base;
 }
 
diff --git a/src/core/tsi/transport_security_grpc.c b/src/core/tsi/transport_security_grpc.cc
similarity index 100%
rename from src/core/tsi/transport_security_grpc.c
rename to src/core/tsi/transport_security_grpc.cc
diff --git a/src/cpp/common/version_cc.cc b/src/cpp/common/version_cc.cc
index 2e9a513..8049cbe 100644
--- a/src/cpp/common/version_cc.cc
+++ b/src/cpp/common/version_cc.cc
@@ -22,5 +22,5 @@
 #include <grpc++/grpc++.h>
 
 namespace grpc {
-grpc::string Version() { return "1.7.0-dev"; }
+grpc::string Version() { return "1.8.0-dev"; }
 }
diff --git a/src/csharp/Grpc.Core/Internal/AsyncCall.cs b/src/csharp/Grpc.Core/Internal/AsyncCall.cs
index 17109de..09fb722 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCall.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCall.cs
@@ -34,6 +34,9 @@
         readonly CallInvocationDetails<TRequest, TResponse> details;
         readonly INativeCall injectedNativeCall;  // for testing
 
+        // Dispose of to de-register cancellation token registration
+        IDisposable cancellationTokenRegistration;
+
         // Completion of a pending unary response if not null.
         TaskCompletionSource<TResponse> unaryResponseTcs;
 
@@ -320,6 +323,7 @@
         protected override void OnAfterReleaseResources()
         {
             details.Channel.RemoveCallReference(this);
+            cancellationTokenRegistration?.Dispose();
         }
 
         protected override bool IsClient
@@ -405,7 +409,7 @@
             var token = details.Options.CancellationToken;
             if (token.CanBeCanceled)
             {
-                token.Register(() => this.Cancel());
+                cancellationTokenRegistration = token.Register(() => this.Cancel());
             }
         }
 
diff --git a/src/csharp/Grpc.Core/Version.csproj.include b/src/csharp/Grpc.Core/Version.csproj.include
index 124ecab..b9ceaf8 100755
--- a/src/csharp/Grpc.Core/Version.csproj.include
+++ b/src/csharp/Grpc.Core/Version.csproj.include
@@ -1,7 +1,7 @@
 <!-- This file is generated -->
 <Project>
   <PropertyGroup>
-    <GrpcCsharpVersion>1.7.0-dev</GrpcCsharpVersion>
+    <GrpcCsharpVersion>1.8.0-dev</GrpcCsharpVersion>
     <GoogleProtobufVersion>3.3.0</GoogleProtobufVersion>
   </PropertyGroup>
 </Project>
diff --git a/src/csharp/Grpc.Core/VersionInfo.cs b/src/csharp/Grpc.Core/VersionInfo.cs
index 588cc84..dab9388 100644
--- a/src/csharp/Grpc.Core/VersionInfo.cs
+++ b/src/csharp/Grpc.Core/VersionInfo.cs
@@ -33,11 +33,11 @@
         /// <summary>
         /// Current <c>AssemblyFileVersion</c> of gRPC C# assemblies
         /// </summary>
-        public const string CurrentAssemblyFileVersion = "1.7.0.0";
+        public const string CurrentAssemblyFileVersion = "1.8.0.0";
 
         /// <summary>
         /// Current version of gRPC C#
         /// </summary>
-        public const string CurrentVersion = "1.7.0-dev";
+        public const string CurrentVersion = "1.8.0-dev";
     }
 }
diff --git a/src/csharp/build_packages_dotnetcli.bat b/src/csharp/build_packages_dotnetcli.bat
index c419d87..ff013d5 100755
--- a/src/csharp/build_packages_dotnetcli.bat
+++ b/src/csharp/build_packages_dotnetcli.bat
@@ -13,7 +13,7 @@
 @rem limitations under the License.
 
 @rem Current package versions
-set VERSION=1.7.0-dev
+set VERSION=1.8.0-dev
 
 @rem Adjust the location of nuget.exe
 set NUGET=C:\nuget\nuget.exe
diff --git a/src/csharp/build_packages_dotnetcli.sh b/src/csharp/build_packages_dotnetcli.sh
index 124dfbb..44a4791 100755
--- a/src/csharp/build_packages_dotnetcli.sh
+++ b/src/csharp/build_packages_dotnetcli.sh
@@ -39,7 +39,7 @@
 dotnet pack --configuration Release Grpc.HealthCheck --output ../../../artifacts
 dotnet pack --configuration Release Grpc.Reflection --output ../../../artifacts
 
-nuget pack Grpc.nuspec -Version "1.7.0-dev" -OutputDirectory ../../artifacts
-nuget pack Grpc.Tools.nuspec -Version "1.7.0-dev" -OutputDirectory ../../artifacts
+nuget pack Grpc.nuspec -Version "1.8.0-dev" -OutputDirectory ../../artifacts
+nuget pack Grpc.Tools.nuspec -Version "1.8.0-dev" -OutputDirectory ../../artifacts
 
 (cd ../../artifacts && zip csharp_nugets_dotnetcli.zip *.nupkg)
diff --git a/src/node/health_check/package.json b/src/node/health_check/package.json
index 3c7d370..6f09c8f 100644
--- a/src/node/health_check/package.json
+++ b/src/node/health_check/package.json
@@ -1,6 +1,6 @@
 {
   "name": "grpc-health-check",
-  "version": "1.7.0-dev",
+  "version": "1.8.0-dev",
   "author": "Google Inc.",
   "description": "Health check service for use with gRPC",
   "repository": {
@@ -15,7 +15,7 @@
     }
   ],
   "dependencies": {
-    "grpc": "^1.7.0-dev",
+    "grpc": "^1.8.0-dev",
     "lodash": "^3.9.3",
     "google-protobuf": "^3.0.0"
   },
diff --git a/src/node/tools/package.json b/src/node/tools/package.json
index d9b1fb8..f88fc65 100644
--- a/src/node/tools/package.json
+++ b/src/node/tools/package.json
@@ -1,6 +1,6 @@
 {
   "name": "grpc-tools",
-  "version": "1.7.0-dev",
+  "version": "1.8.0-dev",
   "author": "Google Inc.",
   "description": "Tools for developing with gRPC on Node.js",
   "homepage": "https://grpc.io/",
diff --git "a/src/objective-c/\041ProtoCompiler-gRPCPlugin.podspec" "b/src/objective-c/\041ProtoCompiler-gRPCPlugin.podspec"
index 7d073c9..9065ab9 100644
--- "a/src/objective-c/\041ProtoCompiler-gRPCPlugin.podspec"
+++ "b/src/objective-c/\041ProtoCompiler-gRPCPlugin.podspec"
@@ -42,7 +42,7 @@
   # exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed
   # before them.
   s.name     = '!ProtoCompiler-gRPCPlugin'
-  v = '1.7.0-dev'
+  v = '1.8.0-dev'
   s.version  = v
   s.summary  = 'The gRPC ProtoC plugin generates Objective-C files from .proto services.'
   s.description = <<-DESC
diff --git a/src/objective-c/GRPCClient/private/version.h b/src/objective-c/GRPCClient/private/version.h
index 843954e..db589d1 100644
--- a/src/objective-c/GRPCClient/private/version.h
+++ b/src/objective-c/GRPCClient/private/version.h
@@ -23,4 +23,4 @@
 // `tools/buildgen/generate_projects.sh`.
 
 
-#define GRPC_OBJC_VERSION_STRING @"1.7.0-dev"
+#define GRPC_OBJC_VERSION_STRING @"1.8.0-dev"
diff --git a/src/php/composer.json b/src/php/composer.json
index 3606a18..09471d2 100644
--- a/src/php/composer.json
+++ b/src/php/composer.json
@@ -2,7 +2,7 @@
   "name": "grpc/grpc-dev",
   "description": "gRPC library for PHP - for Developement use only",
   "license": "Apache-2.0",
-  "version": "1.7.0",
+  "version": "1.8.0",
   "require": {
     "php": ">=5.5.0",
     "google/protobuf": "^v3.3.0"
diff --git a/src/php/ext/grpc/version.h b/src/php/ext/grpc/version.h
index 07d8eee..93dd563 100644
--- a/src/php/ext/grpc/version.h
+++ b/src/php/ext/grpc/version.h
@@ -20,6 +20,6 @@
 #ifndef VERSION_H
 #define VERSION_H
 
-#define PHP_GRPC_VERSION "1.7.0dev"
+#define PHP_GRPC_VERSION "1.8.0dev"
 
 #endif /* VERSION_H */
diff --git a/src/python/grpcio/grpc/_grpcio_metadata.py b/src/python/grpcio/grpc/_grpcio_metadata.py
index a4eb358..0887ac1 100644
--- a/src/python/grpcio/grpc/_grpcio_metadata.py
+++ b/src/python/grpcio/grpc/_grpcio_metadata.py
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc/_grpcio_metadata.py.template`!!!
 
-__version__ = """1.7.0.dev0"""
+__version__ = """1.8.0.dev0"""
diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py
index 7b684f2..7b9fd64 100644
--- a/src/python/grpcio/grpc_core_dependencies.py
+++ b/src/python/grpcio/grpc_core_dependencies.py
@@ -15,313 +15,313 @@
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_core_dependencies.py.template`!!!
 
 CORE_SOURCE_FILES = [
-  'src/core/lib/profiling/basic_timers.c',
-  'src/core/lib/profiling/stap_timers.c',
-  'src/core/lib/support/alloc.c',
-  'src/core/lib/support/arena.c',
-  'src/core/lib/support/atm.c',
-  'src/core/lib/support/avl.c',
-  'src/core/lib/support/backoff.c',
-  'src/core/lib/support/cmdline.c',
-  'src/core/lib/support/cpu_iphone.c',
-  'src/core/lib/support/cpu_linux.c',
-  'src/core/lib/support/cpu_posix.c',
-  'src/core/lib/support/cpu_windows.c',
-  'src/core/lib/support/env_linux.c',
-  'src/core/lib/support/env_posix.c',
-  'src/core/lib/support/env_windows.c',
-  'src/core/lib/support/histogram.c',
-  'src/core/lib/support/host_port.c',
-  'src/core/lib/support/log.c',
-  'src/core/lib/support/log_android.c',
-  'src/core/lib/support/log_linux.c',
-  'src/core/lib/support/log_posix.c',
-  'src/core/lib/support/log_windows.c',
-  'src/core/lib/support/mpscq.c',
-  'src/core/lib/support/murmur_hash.c',
-  'src/core/lib/support/stack_lockfree.c',
-  'src/core/lib/support/string.c',
-  'src/core/lib/support/string_posix.c',
-  'src/core/lib/support/string_util_windows.c',
-  'src/core/lib/support/string_windows.c',
-  'src/core/lib/support/subprocess_posix.c',
-  'src/core/lib/support/subprocess_windows.c',
-  'src/core/lib/support/sync.c',
-  'src/core/lib/support/sync_posix.c',
-  'src/core/lib/support/sync_windows.c',
-  'src/core/lib/support/thd.c',
-  'src/core/lib/support/thd_posix.c',
-  'src/core/lib/support/thd_windows.c',
-  'src/core/lib/support/time.c',
-  'src/core/lib/support/time_posix.c',
-  'src/core/lib/support/time_precise.c',
-  'src/core/lib/support/time_windows.c',
-  'src/core/lib/support/tls_pthread.c',
-  'src/core/lib/support/tmpfile_msys.c',
-  'src/core/lib/support/tmpfile_posix.c',
-  'src/core/lib/support/tmpfile_windows.c',
-  'src/core/lib/support/wrap_memcpy.c',
-  'src/core/lib/surface/init.c',
-  'src/core/lib/channel/channel_args.c',
-  'src/core/lib/channel/channel_stack.c',
-  'src/core/lib/channel/channel_stack_builder.c',
-  'src/core/lib/channel/connected_channel.c',
-  'src/core/lib/channel/handshaker.c',
-  'src/core/lib/channel/handshaker_factory.c',
-  'src/core/lib/channel/handshaker_registry.c',
-  'src/core/lib/compression/compression.c',
-  'src/core/lib/compression/message_compress.c',
-  'src/core/lib/compression/stream_compression.c',
-  'src/core/lib/compression/stream_compression_gzip.c',
-  'src/core/lib/compression/stream_compression_identity.c',
-  'src/core/lib/debug/stats.c',
-  'src/core/lib/debug/stats_data.c',
-  'src/core/lib/http/format_request.c',
-  'src/core/lib/http/httpcli.c',
-  'src/core/lib/http/parser.c',
-  'src/core/lib/iomgr/call_combiner.c',
-  'src/core/lib/iomgr/closure.c',
-  'src/core/lib/iomgr/combiner.c',
-  'src/core/lib/iomgr/endpoint.c',
-  'src/core/lib/iomgr/endpoint_pair_posix.c',
-  'src/core/lib/iomgr/endpoint_pair_uv.c',
-  'src/core/lib/iomgr/endpoint_pair_windows.c',
-  'src/core/lib/iomgr/error.c',
-  'src/core/lib/iomgr/ev_epoll1_linux.c',
-  'src/core/lib/iomgr/ev_epollex_linux.c',
-  'src/core/lib/iomgr/ev_epollsig_linux.c',
-  'src/core/lib/iomgr/ev_poll_posix.c',
-  'src/core/lib/iomgr/ev_posix.c',
-  'src/core/lib/iomgr/ev_windows.c',
-  'src/core/lib/iomgr/exec_ctx.c',
-  'src/core/lib/iomgr/executor.c',
-  'src/core/lib/iomgr/gethostname_fallback.c',
-  'src/core/lib/iomgr/gethostname_host_name_max.c',
-  'src/core/lib/iomgr/gethostname_sysconf.c',
-  'src/core/lib/iomgr/iocp_windows.c',
-  'src/core/lib/iomgr/iomgr.c',
-  'src/core/lib/iomgr/iomgr_posix.c',
-  'src/core/lib/iomgr/iomgr_uv.c',
-  'src/core/lib/iomgr/iomgr_windows.c',
-  'src/core/lib/iomgr/is_epollexclusive_available.c',
-  'src/core/lib/iomgr/load_file.c',
-  'src/core/lib/iomgr/lockfree_event.c',
-  'src/core/lib/iomgr/network_status_tracker.c',
-  'src/core/lib/iomgr/polling_entity.c',
-  'src/core/lib/iomgr/pollset_set_uv.c',
-  'src/core/lib/iomgr/pollset_set_windows.c',
-  'src/core/lib/iomgr/pollset_uv.c',
-  'src/core/lib/iomgr/pollset_windows.c',
-  'src/core/lib/iomgr/resolve_address_posix.c',
-  'src/core/lib/iomgr/resolve_address_uv.c',
-  'src/core/lib/iomgr/resolve_address_windows.c',
-  'src/core/lib/iomgr/resource_quota.c',
-  'src/core/lib/iomgr/sockaddr_utils.c',
-  'src/core/lib/iomgr/socket_factory_posix.c',
-  'src/core/lib/iomgr/socket_mutator.c',
-  'src/core/lib/iomgr/socket_utils_common_posix.c',
-  'src/core/lib/iomgr/socket_utils_linux.c',
-  'src/core/lib/iomgr/socket_utils_posix.c',
-  'src/core/lib/iomgr/socket_utils_uv.c',
-  'src/core/lib/iomgr/socket_utils_windows.c',
-  'src/core/lib/iomgr/socket_windows.c',
-  'src/core/lib/iomgr/tcp_client_posix.c',
-  'src/core/lib/iomgr/tcp_client_uv.c',
-  'src/core/lib/iomgr/tcp_client_windows.c',
-  'src/core/lib/iomgr/tcp_posix.c',
-  'src/core/lib/iomgr/tcp_server_posix.c',
-  'src/core/lib/iomgr/tcp_server_utils_posix_common.c',
-  'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c',
-  'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c',
-  'src/core/lib/iomgr/tcp_server_uv.c',
-  'src/core/lib/iomgr/tcp_server_windows.c',
-  'src/core/lib/iomgr/tcp_uv.c',
-  'src/core/lib/iomgr/tcp_windows.c',
-  'src/core/lib/iomgr/time_averaged_stats.c',
-  'src/core/lib/iomgr/timer_generic.c',
-  'src/core/lib/iomgr/timer_heap.c',
-  'src/core/lib/iomgr/timer_manager.c',
-  'src/core/lib/iomgr/timer_uv.c',
-  'src/core/lib/iomgr/udp_server.c',
-  'src/core/lib/iomgr/unix_sockets_posix.c',
-  'src/core/lib/iomgr/unix_sockets_posix_noop.c',
-  'src/core/lib/iomgr/wakeup_fd_cv.c',
-  'src/core/lib/iomgr/wakeup_fd_eventfd.c',
-  'src/core/lib/iomgr/wakeup_fd_nospecial.c',
-  'src/core/lib/iomgr/wakeup_fd_pipe.c',
-  'src/core/lib/iomgr/wakeup_fd_posix.c',
-  'src/core/lib/json/json.c',
-  'src/core/lib/json/json_reader.c',
-  'src/core/lib/json/json_string.c',
-  'src/core/lib/json/json_writer.c',
-  'src/core/lib/slice/b64.c',
-  'src/core/lib/slice/percent_encoding.c',
-  'src/core/lib/slice/slice.c',
-  'src/core/lib/slice/slice_buffer.c',
-  'src/core/lib/slice/slice_hash_table.c',
-  'src/core/lib/slice/slice_intern.c',
-  'src/core/lib/slice/slice_string_helpers.c',
-  'src/core/lib/surface/alarm.c',
-  'src/core/lib/surface/api_trace.c',
-  'src/core/lib/surface/byte_buffer.c',
-  'src/core/lib/surface/byte_buffer_reader.c',
-  'src/core/lib/surface/call.c',
-  'src/core/lib/surface/call_details.c',
-  'src/core/lib/surface/call_log_batch.c',
-  'src/core/lib/surface/channel.c',
-  'src/core/lib/surface/channel_init.c',
-  'src/core/lib/surface/channel_ping.c',
-  'src/core/lib/surface/channel_stack_type.c',
-  'src/core/lib/surface/completion_queue.c',
-  'src/core/lib/surface/completion_queue_factory.c',
-  'src/core/lib/surface/event_string.c',
+  'src/core/lib/profiling/basic_timers.cc',
+  'src/core/lib/profiling/stap_timers.cc',
+  'src/core/lib/support/alloc.cc',
+  'src/core/lib/support/arena.cc',
+  'src/core/lib/support/atm.cc',
+  'src/core/lib/support/avl.cc',
+  'src/core/lib/support/backoff.cc',
+  'src/core/lib/support/cmdline.cc',
+  'src/core/lib/support/cpu_iphone.cc',
+  'src/core/lib/support/cpu_linux.cc',
+  'src/core/lib/support/cpu_posix.cc',
+  'src/core/lib/support/cpu_windows.cc',
+  'src/core/lib/support/env_linux.cc',
+  'src/core/lib/support/env_posix.cc',
+  'src/core/lib/support/env_windows.cc',
+  'src/core/lib/support/histogram.cc',
+  'src/core/lib/support/host_port.cc',
+  'src/core/lib/support/log.cc',
+  'src/core/lib/support/log_android.cc',
+  'src/core/lib/support/log_linux.cc',
+  'src/core/lib/support/log_posix.cc',
+  'src/core/lib/support/log_windows.cc',
+  'src/core/lib/support/mpscq.cc',
+  'src/core/lib/support/murmur_hash.cc',
+  'src/core/lib/support/stack_lockfree.cc',
+  'src/core/lib/support/string.cc',
+  'src/core/lib/support/string_posix.cc',
+  'src/core/lib/support/string_util_windows.cc',
+  'src/core/lib/support/string_windows.cc',
+  'src/core/lib/support/subprocess_posix.cc',
+  'src/core/lib/support/subprocess_windows.cc',
+  'src/core/lib/support/sync.cc',
+  'src/core/lib/support/sync_posix.cc',
+  'src/core/lib/support/sync_windows.cc',
+  'src/core/lib/support/thd.cc',
+  'src/core/lib/support/thd_posix.cc',
+  'src/core/lib/support/thd_windows.cc',
+  'src/core/lib/support/time.cc',
+  'src/core/lib/support/time_posix.cc',
+  'src/core/lib/support/time_precise.cc',
+  'src/core/lib/support/time_windows.cc',
+  'src/core/lib/support/tls_pthread.cc',
+  'src/core/lib/support/tmpfile_msys.cc',
+  'src/core/lib/support/tmpfile_posix.cc',
+  'src/core/lib/support/tmpfile_windows.cc',
+  'src/core/lib/support/wrap_memcpy.cc',
+  'src/core/lib/surface/init.cc',
+  'src/core/lib/channel/channel_args.cc',
+  'src/core/lib/channel/channel_stack.cc',
+  'src/core/lib/channel/channel_stack_builder.cc',
+  'src/core/lib/channel/connected_channel.cc',
+  'src/core/lib/channel/handshaker.cc',
+  'src/core/lib/channel/handshaker_factory.cc',
+  'src/core/lib/channel/handshaker_registry.cc',
+  'src/core/lib/compression/compression.cc',
+  'src/core/lib/compression/message_compress.cc',
+  'src/core/lib/compression/stream_compression.cc',
+  'src/core/lib/compression/stream_compression_gzip.cc',
+  'src/core/lib/compression/stream_compression_identity.cc',
+  'src/core/lib/debug/stats.cc',
+  'src/core/lib/debug/stats_data.cc',
+  'src/core/lib/http/format_request.cc',
+  'src/core/lib/http/httpcli.cc',
+  'src/core/lib/http/parser.cc',
+  'src/core/lib/iomgr/call_combiner.cc',
+  'src/core/lib/iomgr/closure.cc',
+  'src/core/lib/iomgr/combiner.cc',
+  'src/core/lib/iomgr/endpoint.cc',
+  'src/core/lib/iomgr/endpoint_pair_posix.cc',
+  'src/core/lib/iomgr/endpoint_pair_uv.cc',
+  'src/core/lib/iomgr/endpoint_pair_windows.cc',
+  'src/core/lib/iomgr/error.cc',
+  'src/core/lib/iomgr/ev_epoll1_linux.cc',
+  'src/core/lib/iomgr/ev_epollex_linux.cc',
+  'src/core/lib/iomgr/ev_epollsig_linux.cc',
+  'src/core/lib/iomgr/ev_poll_posix.cc',
+  'src/core/lib/iomgr/ev_posix.cc',
+  'src/core/lib/iomgr/ev_windows.cc',
+  'src/core/lib/iomgr/exec_ctx.cc',
+  'src/core/lib/iomgr/executor.cc',
+  'src/core/lib/iomgr/gethostname_fallback.cc',
+  'src/core/lib/iomgr/gethostname_host_name_max.cc',
+  'src/core/lib/iomgr/gethostname_sysconf.cc',
+  'src/core/lib/iomgr/iocp_windows.cc',
+  'src/core/lib/iomgr/iomgr.cc',
+  'src/core/lib/iomgr/iomgr_posix.cc',
+  'src/core/lib/iomgr/iomgr_uv.cc',
+  'src/core/lib/iomgr/iomgr_windows.cc',
+  'src/core/lib/iomgr/is_epollexclusive_available.cc',
+  'src/core/lib/iomgr/load_file.cc',
+  'src/core/lib/iomgr/lockfree_event.cc',
+  'src/core/lib/iomgr/network_status_tracker.cc',
+  'src/core/lib/iomgr/polling_entity.cc',
+  'src/core/lib/iomgr/pollset_set_uv.cc',
+  'src/core/lib/iomgr/pollset_set_windows.cc',
+  'src/core/lib/iomgr/pollset_uv.cc',
+  'src/core/lib/iomgr/pollset_windows.cc',
+  'src/core/lib/iomgr/resolve_address_posix.cc',
+  'src/core/lib/iomgr/resolve_address_uv.cc',
+  'src/core/lib/iomgr/resolve_address_windows.cc',
+  'src/core/lib/iomgr/resource_quota.cc',
+  'src/core/lib/iomgr/sockaddr_utils.cc',
+  'src/core/lib/iomgr/socket_factory_posix.cc',
+  'src/core/lib/iomgr/socket_mutator.cc',
+  'src/core/lib/iomgr/socket_utils_common_posix.cc',
+  'src/core/lib/iomgr/socket_utils_linux.cc',
+  'src/core/lib/iomgr/socket_utils_posix.cc',
+  'src/core/lib/iomgr/socket_utils_uv.cc',
+  'src/core/lib/iomgr/socket_utils_windows.cc',
+  'src/core/lib/iomgr/socket_windows.cc',
+  'src/core/lib/iomgr/tcp_client_posix.cc',
+  'src/core/lib/iomgr/tcp_client_uv.cc',
+  'src/core/lib/iomgr/tcp_client_windows.cc',
+  'src/core/lib/iomgr/tcp_posix.cc',
+  'src/core/lib/iomgr/tcp_server_posix.cc',
+  'src/core/lib/iomgr/tcp_server_utils_posix_common.cc',
+  'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc',
+  'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc',
+  'src/core/lib/iomgr/tcp_server_uv.cc',
+  'src/core/lib/iomgr/tcp_server_windows.cc',
+  'src/core/lib/iomgr/tcp_uv.cc',
+  'src/core/lib/iomgr/tcp_windows.cc',
+  'src/core/lib/iomgr/time_averaged_stats.cc',
+  'src/core/lib/iomgr/timer_generic.cc',
+  'src/core/lib/iomgr/timer_heap.cc',
+  'src/core/lib/iomgr/timer_manager.cc',
+  'src/core/lib/iomgr/timer_uv.cc',
+  'src/core/lib/iomgr/udp_server.cc',
+  'src/core/lib/iomgr/unix_sockets_posix.cc',
+  'src/core/lib/iomgr/unix_sockets_posix_noop.cc',
+  'src/core/lib/iomgr/wakeup_fd_cv.cc',
+  'src/core/lib/iomgr/wakeup_fd_eventfd.cc',
+  'src/core/lib/iomgr/wakeup_fd_nospecial.cc',
+  'src/core/lib/iomgr/wakeup_fd_pipe.cc',
+  'src/core/lib/iomgr/wakeup_fd_posix.cc',
+  'src/core/lib/json/json.cc',
+  'src/core/lib/json/json_reader.cc',
+  'src/core/lib/json/json_string.cc',
+  'src/core/lib/json/json_writer.cc',
+  'src/core/lib/slice/b64.cc',
+  'src/core/lib/slice/percent_encoding.cc',
+  'src/core/lib/slice/slice.cc',
+  'src/core/lib/slice/slice_buffer.cc',
+  'src/core/lib/slice/slice_hash_table.cc',
+  'src/core/lib/slice/slice_intern.cc',
+  'src/core/lib/slice/slice_string_helpers.cc',
+  'src/core/lib/surface/alarm.cc',
+  'src/core/lib/surface/api_trace.cc',
+  'src/core/lib/surface/byte_buffer.cc',
+  'src/core/lib/surface/byte_buffer_reader.cc',
+  'src/core/lib/surface/call.cc',
+  'src/core/lib/surface/call_details.cc',
+  'src/core/lib/surface/call_log_batch.cc',
+  'src/core/lib/surface/channel.cc',
+  'src/core/lib/surface/channel_init.cc',
+  'src/core/lib/surface/channel_ping.cc',
+  'src/core/lib/surface/channel_stack_type.cc',
+  'src/core/lib/surface/completion_queue.cc',
+  'src/core/lib/surface/completion_queue_factory.cc',
+  'src/core/lib/surface/event_string.cc',
   'src/core/lib/surface/lame_client.cc',
-  'src/core/lib/surface/metadata_array.c',
-  'src/core/lib/surface/server.c',
-  'src/core/lib/surface/validate_metadata.c',
-  'src/core/lib/surface/version.c',
-  'src/core/lib/transport/bdp_estimator.c',
-  'src/core/lib/transport/byte_stream.c',
-  'src/core/lib/transport/connectivity_state.c',
-  'src/core/lib/transport/error_utils.c',
-  'src/core/lib/transport/metadata.c',
-  'src/core/lib/transport/metadata_batch.c',
-  'src/core/lib/transport/pid_controller.c',
-  'src/core/lib/transport/service_config.c',
-  'src/core/lib/transport/static_metadata.c',
-  'src/core/lib/transport/status_conversion.c',
-  'src/core/lib/transport/timeout_encoding.c',
-  'src/core/lib/transport/transport.c',
-  'src/core/lib/transport/transport_op_string.c',
-  'src/core/lib/debug/trace.c',
-  'src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c',
-  'src/core/ext/transport/chttp2/transport/bin_decoder.c',
-  'src/core/ext/transport/chttp2/transport/bin_encoder.c',
-  'src/core/ext/transport/chttp2/transport/chttp2_plugin.c',
-  'src/core/ext/transport/chttp2/transport/chttp2_transport.c',
-  'src/core/ext/transport/chttp2/transport/flow_control.c',
-  'src/core/ext/transport/chttp2/transport/frame_data.c',
-  'src/core/ext/transport/chttp2/transport/frame_goaway.c',
-  'src/core/ext/transport/chttp2/transport/frame_ping.c',
-  'src/core/ext/transport/chttp2/transport/frame_rst_stream.c',
-  'src/core/ext/transport/chttp2/transport/frame_settings.c',
-  'src/core/ext/transport/chttp2/transport/frame_window_update.c',
-  'src/core/ext/transport/chttp2/transport/hpack_encoder.c',
-  'src/core/ext/transport/chttp2/transport/hpack_parser.c',
-  'src/core/ext/transport/chttp2/transport/hpack_table.c',
-  'src/core/ext/transport/chttp2/transport/http2_settings.c',
-  'src/core/ext/transport/chttp2/transport/huffsyms.c',
-  'src/core/ext/transport/chttp2/transport/incoming_metadata.c',
-  'src/core/ext/transport/chttp2/transport/parsing.c',
-  'src/core/ext/transport/chttp2/transport/stream_lists.c',
-  'src/core/ext/transport/chttp2/transport/stream_map.c',
-  'src/core/ext/transport/chttp2/transport/varint.c',
-  'src/core/ext/transport/chttp2/transport/writing.c',
-  'src/core/ext/transport/chttp2/alpn/alpn.c',
-  'src/core/ext/filters/http/client/http_client_filter.c',
-  'src/core/ext/filters/http/http_filters_plugin.c',
-  'src/core/ext/filters/http/message_compress/message_compress_filter.c',
-  'src/core/ext/filters/http/server/http_server_filter.c',
-  'src/core/lib/http/httpcli_security_connector.c',
-  'src/core/lib/security/context/security_context.c',
-  'src/core/lib/security/credentials/composite/composite_credentials.c',
-  'src/core/lib/security/credentials/credentials.c',
-  'src/core/lib/security/credentials/credentials_metadata.c',
-  'src/core/lib/security/credentials/fake/fake_credentials.c',
-  'src/core/lib/security/credentials/google_default/credentials_generic.c',
-  'src/core/lib/security/credentials/google_default/google_default_credentials.c',
-  'src/core/lib/security/credentials/iam/iam_credentials.c',
-  'src/core/lib/security/credentials/jwt/json_token.c',
-  'src/core/lib/security/credentials/jwt/jwt_credentials.c',
-  'src/core/lib/security/credentials/jwt/jwt_verifier.c',
-  'src/core/lib/security/credentials/oauth2/oauth2_credentials.c',
-  'src/core/lib/security/credentials/plugin/plugin_credentials.c',
-  'src/core/lib/security/credentials/ssl/ssl_credentials.c',
-  'src/core/lib/security/transport/client_auth_filter.c',
-  'src/core/lib/security/transport/lb_targets_info.c',
-  'src/core/lib/security/transport/secure_endpoint.c',
-  'src/core/lib/security/transport/security_connector.c',
-  'src/core/lib/security/transport/security_handshaker.c',
-  'src/core/lib/security/transport/server_auth_filter.c',
-  'src/core/lib/security/transport/tsi_error.c',
-  'src/core/lib/security/util/json_util.c',
-  'src/core/lib/surface/init_secure.c',
-  'src/core/tsi/fake_transport_security.c',
-  'src/core/tsi/gts_transport_security.c',
-  'src/core/tsi/ssl_transport_security.c',
-  'src/core/tsi/transport_security_grpc.c',
-  'src/core/tsi/transport_security.c',
-  'src/core/tsi/transport_security_adapter.c',
-  'src/core/ext/transport/chttp2/server/chttp2_server.c',
-  'src/core/ext/transport/chttp2/client/secure/secure_channel_create.c',
-  'src/core/ext/filters/client_channel/channel_connectivity.c',
-  'src/core/ext/filters/client_channel/client_channel.c',
-  'src/core/ext/filters/client_channel/client_channel_factory.c',
-  'src/core/ext/filters/client_channel/client_channel_plugin.c',
-  'src/core/ext/filters/client_channel/connector.c',
-  'src/core/ext/filters/client_channel/http_connect_handshaker.c',
-  'src/core/ext/filters/client_channel/http_proxy.c',
-  'src/core/ext/filters/client_channel/lb_policy.c',
-  'src/core/ext/filters/client_channel/lb_policy_factory.c',
-  'src/core/ext/filters/client_channel/lb_policy_registry.c',
-  'src/core/ext/filters/client_channel/parse_address.c',
-  'src/core/ext/filters/client_channel/proxy_mapper.c',
-  'src/core/ext/filters/client_channel/proxy_mapper_registry.c',
-  'src/core/ext/filters/client_channel/resolver.c',
-  'src/core/ext/filters/client_channel/resolver_factory.c',
-  'src/core/ext/filters/client_channel/resolver_registry.c',
-  'src/core/ext/filters/client_channel/retry_throttle.c',
-  'src/core/ext/filters/client_channel/subchannel.c',
-  'src/core/ext/filters/client_channel/subchannel_index.c',
-  'src/core/ext/filters/client_channel/uri_parser.c',
-  'src/core/ext/filters/deadline/deadline_filter.c',
-  'src/core/ext/transport/chttp2/client/chttp2_connector.c',
-  'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
-  'src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c',
-  'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
-  'src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c',
-  'src/core/ext/transport/inproc/inproc_plugin.c',
-  'src/core/ext/transport/inproc/inproc_transport.c',
-  'src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c',
-  'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c',
-  'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c',
-  'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c',
-  'src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c',
+  'src/core/lib/surface/metadata_array.cc',
+  'src/core/lib/surface/server.cc',
+  'src/core/lib/surface/validate_metadata.cc',
+  'src/core/lib/surface/version.cc',
+  'src/core/lib/transport/bdp_estimator.cc',
+  'src/core/lib/transport/byte_stream.cc',
+  'src/core/lib/transport/connectivity_state.cc',
+  'src/core/lib/transport/error_utils.cc',
+  'src/core/lib/transport/metadata.cc',
+  'src/core/lib/transport/metadata_batch.cc',
+  'src/core/lib/transport/pid_controller.cc',
+  'src/core/lib/transport/service_config.cc',
+  'src/core/lib/transport/static_metadata.cc',
+  'src/core/lib/transport/status_conversion.cc',
+  'src/core/lib/transport/timeout_encoding.cc',
+  'src/core/lib/transport/transport.cc',
+  'src/core/lib/transport/transport_op_string.cc',
+  'src/core/lib/debug/trace.cc',
+  'src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc',
+  'src/core/ext/transport/chttp2/transport/bin_decoder.cc',
+  'src/core/ext/transport/chttp2/transport/bin_encoder.cc',
+  'src/core/ext/transport/chttp2/transport/chttp2_plugin.cc',
+  'src/core/ext/transport/chttp2/transport/chttp2_transport.cc',
+  'src/core/ext/transport/chttp2/transport/flow_control.cc',
+  'src/core/ext/transport/chttp2/transport/frame_data.cc',
+  'src/core/ext/transport/chttp2/transport/frame_goaway.cc',
+  'src/core/ext/transport/chttp2/transport/frame_ping.cc',
+  'src/core/ext/transport/chttp2/transport/frame_rst_stream.cc',
+  'src/core/ext/transport/chttp2/transport/frame_settings.cc',
+  'src/core/ext/transport/chttp2/transport/frame_window_update.cc',
+  'src/core/ext/transport/chttp2/transport/hpack_encoder.cc',
+  'src/core/ext/transport/chttp2/transport/hpack_parser.cc',
+  'src/core/ext/transport/chttp2/transport/hpack_table.cc',
+  'src/core/ext/transport/chttp2/transport/http2_settings.cc',
+  'src/core/ext/transport/chttp2/transport/huffsyms.cc',
+  'src/core/ext/transport/chttp2/transport/incoming_metadata.cc',
+  'src/core/ext/transport/chttp2/transport/parsing.cc',
+  'src/core/ext/transport/chttp2/transport/stream_lists.cc',
+  'src/core/ext/transport/chttp2/transport/stream_map.cc',
+  'src/core/ext/transport/chttp2/transport/varint.cc',
+  'src/core/ext/transport/chttp2/transport/writing.cc',
+  'src/core/ext/transport/chttp2/alpn/alpn.cc',
+  'src/core/ext/filters/http/client/http_client_filter.cc',
+  'src/core/ext/filters/http/http_filters_plugin.cc',
+  'src/core/ext/filters/http/message_compress/message_compress_filter.cc',
+  'src/core/ext/filters/http/server/http_server_filter.cc',
+  'src/core/lib/http/httpcli_security_connector.cc',
+  'src/core/lib/security/context/security_context.cc',
+  'src/core/lib/security/credentials/composite/composite_credentials.cc',
+  'src/core/lib/security/credentials/credentials.cc',
+  'src/core/lib/security/credentials/credentials_metadata.cc',
+  'src/core/lib/security/credentials/fake/fake_credentials.cc',
+  'src/core/lib/security/credentials/google_default/credentials_generic.cc',
+  'src/core/lib/security/credentials/google_default/google_default_credentials.cc',
+  'src/core/lib/security/credentials/iam/iam_credentials.cc',
+  'src/core/lib/security/credentials/jwt/json_token.cc',
+  'src/core/lib/security/credentials/jwt/jwt_credentials.cc',
+  'src/core/lib/security/credentials/jwt/jwt_verifier.cc',
+  'src/core/lib/security/credentials/oauth2/oauth2_credentials.cc',
+  'src/core/lib/security/credentials/plugin/plugin_credentials.cc',
+  'src/core/lib/security/credentials/ssl/ssl_credentials.cc',
+  'src/core/lib/security/transport/client_auth_filter.cc',
+  'src/core/lib/security/transport/lb_targets_info.cc',
+  'src/core/lib/security/transport/secure_endpoint.cc',
+  'src/core/lib/security/transport/security_connector.cc',
+  'src/core/lib/security/transport/security_handshaker.cc',
+  'src/core/lib/security/transport/server_auth_filter.cc',
+  'src/core/lib/security/transport/tsi_error.cc',
+  'src/core/lib/security/util/json_util.cc',
+  'src/core/lib/surface/init_secure.cc',
+  'src/core/tsi/fake_transport_security.cc',
+  'src/core/tsi/gts_transport_security.cc',
+  'src/core/tsi/ssl_transport_security.cc',
+  'src/core/tsi/transport_security_grpc.cc',
+  'src/core/tsi/transport_security.cc',
+  'src/core/tsi/transport_security_adapter.cc',
+  'src/core/ext/transport/chttp2/server/chttp2_server.cc',
+  'src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc',
+  'src/core/ext/filters/client_channel/channel_connectivity.cc',
+  'src/core/ext/filters/client_channel/client_channel.cc',
+  'src/core/ext/filters/client_channel/client_channel_factory.cc',
+  'src/core/ext/filters/client_channel/client_channel_plugin.cc',
+  'src/core/ext/filters/client_channel/connector.cc',
+  'src/core/ext/filters/client_channel/http_connect_handshaker.cc',
+  'src/core/ext/filters/client_channel/http_proxy.cc',
+  'src/core/ext/filters/client_channel/lb_policy.cc',
+  'src/core/ext/filters/client_channel/lb_policy_factory.cc',
+  'src/core/ext/filters/client_channel/lb_policy_registry.cc',
+  'src/core/ext/filters/client_channel/parse_address.cc',
+  'src/core/ext/filters/client_channel/proxy_mapper.cc',
+  'src/core/ext/filters/client_channel/proxy_mapper_registry.cc',
+  'src/core/ext/filters/client_channel/resolver.cc',
+  'src/core/ext/filters/client_channel/resolver_factory.cc',
+  'src/core/ext/filters/client_channel/resolver_registry.cc',
+  'src/core/ext/filters/client_channel/retry_throttle.cc',
+  'src/core/ext/filters/client_channel/subchannel.cc',
+  'src/core/ext/filters/client_channel/subchannel_index.cc',
+  'src/core/ext/filters/client_channel/uri_parser.cc',
+  'src/core/ext/filters/deadline/deadline_filter.cc',
+  'src/core/ext/transport/chttp2/client/chttp2_connector.cc',
+  'src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc',
+  'src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc',
+  'src/core/ext/transport/chttp2/client/insecure/channel_create.cc',
+  'src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc',
+  'src/core/ext/transport/inproc/inproc_plugin.cc',
+  'src/core/ext/transport/inproc/inproc_transport.cc',
+  'src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc',
+  'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc',
+  'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc',
+  'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc',
+  'src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc',
   'src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c',
   'third_party/nanopb/pb_common.c',
   'third_party/nanopb/pb_decode.c',
   'third_party/nanopb/pb_encode.c',
-  'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c',
-  'src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c',
-  'src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c',
-  'src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c',
-  'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c',
-  'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c',
-  'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c',
-  'src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c',
-  'src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c',
-  'src/core/ext/filters/load_reporting/server_load_reporting_filter.c',
-  'src/core/ext/filters/load_reporting/server_load_reporting_plugin.c',
-  'src/core/ext/census/base_resources.c',
-  'src/core/ext/census/context.c',
+  'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc',
+  'src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc',
+  'src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc',
+  'src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc',
+  'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc',
+  'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc',
+  'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc',
+  'src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc',
+  'src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc',
+  'src/core/ext/filters/load_reporting/server_load_reporting_filter.cc',
+  'src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc',
+  'src/core/ext/census/base_resources.cc',
+  'src/core/ext/census/context.cc',
   'src/core/ext/census/gen/census.pb.c',
   'src/core/ext/census/gen/trace_context.pb.c',
-  'src/core/ext/census/grpc_context.c',
-  'src/core/ext/census/grpc_filter.c',
-  'src/core/ext/census/grpc_plugin.c',
-  'src/core/ext/census/initialize.c',
-  'src/core/ext/census/intrusive_hash_map.c',
-  'src/core/ext/census/mlog.c',
-  'src/core/ext/census/operation.c',
-  'src/core/ext/census/placeholders.c',
-  'src/core/ext/census/resource.c',
-  'src/core/ext/census/trace_context.c',
-  'src/core/ext/census/tracing.c',
-  'src/core/ext/filters/max_age/max_age_filter.c',
-  'src/core/ext/filters/message_size/message_size_filter.c',
-  'src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c',
-  'src/core/ext/filters/workarounds/workaround_utils.c',
-  'src/core/plugin_registry/grpc_plugin_registry.c',
+  'src/core/ext/census/grpc_context.cc',
+  'src/core/ext/census/grpc_filter.cc',
+  'src/core/ext/census/grpc_plugin.cc',
+  'src/core/ext/census/initialize.cc',
+  'src/core/ext/census/intrusive_hash_map.cc',
+  'src/core/ext/census/mlog.cc',
+  'src/core/ext/census/operation.cc',
+  'src/core/ext/census/placeholders.cc',
+  'src/core/ext/census/resource.cc',
+  'src/core/ext/census/trace_context.cc',
+  'src/core/ext/census/tracing.cc',
+  'src/core/ext/filters/max_age/max_age_filter.cc',
+  'src/core/ext/filters/message_size/message_size_filter.cc',
+  'src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc',
+  'src/core/ext/filters/workarounds/workaround_utils.cc',
+  'src/core/plugin_registry/grpc_plugin_registry.cc',
   'src/boringssl/err_data.c',
   'third_party/boringssl/crypto/aes/aes.c',
   'third_party/boringssl/crypto/aes/key_wrap.c',
diff --git a/src/python/grpcio/grpc_version.py b/src/python/grpcio/grpc_version.py
index 3194a89..61c4157 100644
--- a/src/python/grpcio/grpc_version.py
+++ b/src/python/grpcio/grpc_version.py
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_version.py.template`!!!
 
-VERSION='1.7.0.dev0'
+VERSION='1.8.0.dev0'
diff --git a/src/python/grpcio_health_checking/grpc_version.py b/src/python/grpcio_health_checking/grpc_version.py
index ef68bad..889297f 100644
--- a/src/python/grpcio_health_checking/grpc_version.py
+++ b/src/python/grpcio_health_checking/grpc_version.py
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_health_checking/grpc_version.py.template`!!!
 
-VERSION='1.7.0.dev0'
+VERSION='1.8.0.dev0'
diff --git a/src/python/grpcio_reflection/grpc_version.py b/src/python/grpcio_reflection/grpc_version.py
index 55ab959..192f4cc 100644
--- a/src/python/grpcio_reflection/grpc_version.py
+++ b/src/python/grpcio_reflection/grpc_version.py
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_reflection/grpc_version.py.template`!!!
 
-VERSION='1.7.0.dev0'
+VERSION='1.8.0.dev0'
diff --git a/src/python/grpcio_testing/grpc_version.py b/src/python/grpcio_testing/grpc_version.py
index 592d08e..83470c2 100644
--- a/src/python/grpcio_testing/grpc_version.py
+++ b/src/python/grpcio_testing/grpc_version.py
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_testing/grpc_version.py.template`!!!
 
-VERSION='1.7.0.dev0'
+VERSION='1.8.0.dev0'
diff --git a/src/python/grpcio_tests/grpc_version.py b/src/python/grpcio_tests/grpc_version.py
index 9e54dc9..7065edd 100644
--- a/src/python/grpcio_tests/grpc_version.py
+++ b/src/python/grpcio_tests/grpc_version.py
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_tests/grpc_version.py.template`!!!
 
-VERSION='1.7.0.dev0'
+VERSION='1.8.0.dev0'
diff --git a/src/ruby/ext/grpc/rb_call.c b/src/ruby/ext/grpc/rb_call.c
index 5550bb7..29c4a94 100644
--- a/src/ruby/ext/grpc/rb_call.c
+++ b/src/ruby/ext/grpc/rb_call.c
@@ -101,6 +101,7 @@
     return;
   }
   destroy_call((grpc_rb_call *)p);
+  xfree(p);
 }
 
 static size_t md_ary_datasize(const void *p) {
diff --git a/src/ruby/lib/grpc/version.rb b/src/ruby/lib/grpc/version.rb
index 228c01a..3001579 100644
--- a/src/ruby/lib/grpc/version.rb
+++ b/src/ruby/lib/grpc/version.rb
@@ -14,5 +14,5 @@
 
 # GRPC contains the General RPC module.
 module GRPC
-  VERSION = '1.7.0.dev'
+  VERSION = '1.8.0.dev'
 end
diff --git a/src/ruby/qps/proxy-worker.rb b/src/ruby/qps/proxy-worker.rb
index 488610a..ae7006e 100755
--- a/src/ruby/qps/proxy-worker.rb
+++ b/src/ruby/qps/proxy-worker.rb
@@ -31,8 +31,9 @@
 require 'src/proto/grpc/testing/proxy-service_services_pb'
 
 class ProxyBenchmarkClientServiceImpl < Grpc::Testing::ProxyClientService::Service
-  def initialize(port)
+  def initialize(port, c_ext)
     @mytarget = "localhost:" + port.to_s
+    @use_c_ext = c_ext
   end
   def setup(config)
     @config = config
@@ -41,7 +42,13 @@
     @histogram = Histogram.new(@histres, @histmax)
     @start_time = Time.now
     # TODO(vjpai): Support multiple client channels by spawning off a PHP client per channel
-    command = "php -d extension=" + File.expand_path(File.dirname(__FILE__)) + "/../../php/ext/grpc/modules/grpc.so " + File.expand_path(File.dirname(__FILE__)) + "/../../php/tests/qps/client.php " + @mytarget
+    if @use_c_ext
+      puts "Use protobuf c extension"
+      command = "php -d extension=" + File.expand_path(File.dirname(__FILE__)) + "/../../php/tests/qps/vendor/google/protobuf/php/ext/google/protobuf/modules/protobuf.so " + "-d extension=" + File.expand_path(File.dirname(__FILE__)) + "/../../php/ext/grpc/modules/grpc.so " + File.expand_path(File.dirname(__FILE__)) + "/../../php/tests/qps/client.php " + @mytarget
+    else
+      puts "Use protobuf php extension"
+      command = "php -d extension=" + File.expand_path(File.dirname(__FILE__)) + "/../../php/ext/grpc/modules/grpc.so " + File.expand_path(File.dirname(__FILE__)) + "/../../php/tests/qps/client.php " + @mytarget
+    end	
     puts "Starting command: " + command
     @php_pid = spawn(command)
   end
@@ -128,6 +135,9 @@
     opts.on('--driver_port PORT', '<port>') do |v|
       options['driver_port'] = v
     end
+    opts.on("-c", "--[no-]c_proto_ext", "Use protobuf C-extention") do |c|
+      options[:c_ext] = c
+    end
   end.parse!
 
   # Configure any errors with client or server child threads to surface
@@ -136,7 +146,7 @@
   s = GRPC::RpcServer.new
   port = s.add_http2_port("0.0.0.0:" + options['driver_port'].to_s,
                           :this_port_is_insecure)
-  bmc = ProxyBenchmarkClientServiceImpl.new(port)
+  bmc = ProxyBenchmarkClientServiceImpl.new(port, options[:c_ext])
   s.handle(bmc)
   s.handle(ProxyWorkerServiceImpl.new(s, bmc))
   s.run
diff --git a/src/ruby/tools/version.rb b/src/ruby/tools/version.rb
index ea0c4ae..c584a7c 100644
--- a/src/ruby/tools/version.rb
+++ b/src/ruby/tools/version.rb
@@ -14,6 +14,6 @@
 
 module GRPC
   module Tools
-    VERSION = '1.7.0.dev'
+    VERSION = '1.8.0.dev'
   end
 end
diff --git a/templates/gRPC-Core.podspec.template b/templates/gRPC-Core.podspec.template
index e34bc83..f3ac30c 100644
--- a/templates/gRPC-Core.podspec.template
+++ b/templates/gRPC-Core.podspec.template
@@ -31,11 +31,19 @@
     return [f for f in out if not f.startswith("third_party/nanopb/")]
 
   def grpc_public_headers(libs):
+    excluded_files = ["include/grpc/support/atm_gcc_sync.h",
+                      "include/grpc/support/atm_windows.h",
+                      "include/grpc/support/sync_windows.h",
+                      "include/grpc/support/tls_gcc.h",
+                      "include/grpc/support/tls_msvc.h",
+                      "include/grpc/impl/codegen/atm_gcc_sync.h",
+                      "include/grpc/impl/codegen/atm_windows.h",
+                      "include/grpc/impl/codegen/sync_windows.h"]
     out = []
     for lib in libs:
       if lib.name in ("grpc", "gpr"):
         out += lib.get('public_headers', [])
-    return out
+    return [f for f in out if not f in excluded_files]
 
   def grpc_private_headers(libs):
     out = []
@@ -157,8 +165,8 @@
       ss.dependency "#{s.name}/Implementation", version
       ss.dependency "#{s.name}/Cronet-Interface", version
 
-      ss.source_files = 'src/core/ext/transport/cronet/client/secure/cronet_channel_create.c',
-                        'src/core/ext/transport/cronet/transport/cronet_transport.{c,h}',
+      ss.source_files = 'src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc',
+                        'src/core/ext/transport/cronet/transport/cronet_transport.{cc,h}',
                         'third_party/objective_c/Cronet/bidirectional_stream_c.h'
     end
 
diff --git a/templates/include/grpc/module.modulemap.template b/templates/include/grpc/module.modulemap.template
new file mode 100644
index 0000000..8edc4b5
--- /dev/null
+++ b/templates/include/grpc/module.modulemap.template
@@ -0,0 +1,32 @@
+%YAML 1.2
+--- |
+  <%!
+  def grpc_public_headers_no_dir(libs):
+    excluded_files = ["include/grpc/support/atm_gcc_sync.h",
+                      "include/grpc/support/atm_windows.h",
+                      "include/grpc/support/sync_windows.h",
+                      "include/grpc/support/tls_gcc.h",
+                      "include/grpc/support/tls_msvc.h",
+                      "include/grpc/impl/codegen/atm_gcc_sync.h",
+                      "include/grpc/impl/codegen/atm_windows.h",
+                      "include/grpc/impl/codegen/sync_windows.h"]
+    out = []
+    for lib in libs:
+      if lib.name in ("grpc", "gpr"):
+        out += lib.get('public_headers', [])
+    out = [f for f in out if f not in excluded_files]
+    out = [hdr.split('/', 2)[2] for hdr in out]
+    return out
+
+  def header_lines(files):
+    return ('\n  ').join('header "%s"' % f for f in files)
+  %>
+  framework module grpc {
+    umbrella header "grpc.h"
+
+    ${header_lines(grpc_public_headers_no_dir(libs))}
+
+    export *
+    module * { export * }
+  }
+
diff --git a/templates/src/core/lib/surface/version.c.template b/templates/src/core/lib/surface/version.cc.template
similarity index 100%
rename from templates/src/core/lib/surface/version.c.template
rename to templates/src/core/lib/surface/version.cc.template
diff --git a/templates/src/core/plugin_registry.template b/templates/src/core/plugin_registry.template
index cf0f4f5..8d76171 100644
--- a/templates/src/core/plugin_registry.template
+++ b/templates/src/core/plugin_registry.template
@@ -2,7 +2,7 @@
 ---
 foreach: libs
 cond: selected.get('generate_plugin_registry', False)
-output_name: ${selected.name}_plugin_registry.c
+output_name: ${selected.name}_plugin_registry.cc
 template: |
   /*
    *
@@ -25,8 +25,8 @@
   #include <grpc/grpc.h>
 
   %for plugin in selected.plugins:
-  extern void ${plugin}_init(void);
-  extern void ${plugin}_shutdown(void);
+  extern "C" void ${plugin}_init(void);
+  extern "C" void ${plugin}_shutdown(void);
   %endfor
 
   void grpc_register_built_in_plugins(void) {
diff --git a/templates/tools/dockerfile/test/multilang_jessie_x64/Dockerfile.template b/templates/tools/dockerfile/test/multilang_jessie_x64/Dockerfile.template
index 6cad474..0d47aa9 100644
--- a/templates/tools/dockerfile/test/multilang_jessie_x64/Dockerfile.template
+++ b/templates/tools/dockerfile/test/multilang_jessie_x64/Dockerfile.template
@@ -19,6 +19,7 @@
   <%include file="../../apt_get_basic.include"/>
   <%include file="../../gcp_api_libraries.include"/>
   <%include file="../../csharp_deps.include"/>
+  <%include file="../../csharp_dotnetcli_deps.include"/>
   <%include file="../../cxx_deps.include"/>
   <%include file="../../node_deps.include"/>
   <%include file="../../php_deps.include"/>
diff --git a/test/core/end2end/tests/compressed_payload.c b/test/core/end2end/tests/compressed_payload.c
index ce86e97..ba03773 100644
--- a/test/core/end2end/tests/compressed_payload.c
+++ b/test/core/end2end/tests/compressed_payload.c
@@ -193,6 +193,7 @@
   GPR_ASSERT(GRPC_CALL_OK == error);
 
   CQ_EXPECT_COMPLETION(cqv, tag(101), true);
+  CQ_EXPECT_COMPLETION(cqv, tag(1), true);
   cq_verify(cqv);
 
   op = ops;
@@ -221,7 +222,6 @@
   GPR_ASSERT(GRPC_CALL_OK == error);
 
   CQ_EXPECT_COMPLETION(cqv, tag(103), true);
-  CQ_EXPECT_COMPLETION(cqv, tag(1), true);
   cq_verify(cqv);
 
   /* call was cancelled (closed) ... */
diff --git a/test/core/end2end/tests/stream_compression_compressed_payload.c b/test/core/end2end/tests/stream_compression_compressed_payload.c
index 094c4de..8b47741 100644
--- a/test/core/end2end/tests/stream_compression_compressed_payload.c
+++ b/test/core/end2end/tests/stream_compression_compressed_payload.c
@@ -193,6 +193,7 @@
   GPR_ASSERT(GRPC_CALL_OK == error);
 
   CQ_EXPECT_COMPLETION(cqv, tag(101), true);
+  CQ_EXPECT_COMPLETION(cqv, tag(1), true);
   cq_verify(cqv);
 
   op = ops;
@@ -221,7 +222,6 @@
   GPR_ASSERT(GRPC_CALL_OK == error);
 
   CQ_EXPECT_COMPLETION(cqv, tag(103), true);
-  CQ_EXPECT_COMPLETION(cqv, tag(1), true);
   cq_verify(cqv);
 
   /* call was cancelled (closed) ... */
diff --git a/test/core/surface/invalid_channel_args_test.c b/test/core/surface/invalid_channel_args_test.c
index 84d7627..9c84c30 100644
--- a/test/core/surface/invalid_channel_args_test.c
+++ b/test/core/surface/invalid_channel_args_test.c
@@ -25,7 +25,7 @@
 #include "test/core/util/test_config.h"
 
 static char *g_last_log_error_message = NULL;
-static const char *g_file_name = "channel.c";
+static const char *g_file_name = "channel.cc";
 
 static int ends_with(const char *src, const char *suffix) {
   size_t src_len = strlen(src);
diff --git a/test/cpp/qps/gen_build_yaml.py b/test/cpp/qps/gen_build_yaml.py
index a3ccbcf..8575fe5 100755
--- a/test/cpp/qps/gen_build_yaml.py
+++ b/test/cpp/qps/gen_build_yaml.py
@@ -77,7 +77,7 @@
       'defaults': 'boringssl',
       'cpu_cost': guess_cpu(scenario_json, False),
       'exclude_configs': ['tsan', 'asan'],
-      'timeout_seconds': 6*60,
+      'timeout_seconds': 2*60,
       'excluded_poll_engines': scenario_json.get('EXCLUDED_POLL_ENGINES', [])
     }
     for scenario_json in scenario_config.CXXLanguage().scenarios()
@@ -95,7 +95,7 @@
       'defaults': 'boringssl',
       'cpu_cost': guess_cpu(scenario_json, True),
       'exclude_configs': sorted(c for c in configs_from_yaml if c not in ('tsan', 'asan')),
-      'timeout_seconds': 6*60,
+      'timeout_seconds': 2*60,
       'excluded_poll_engines': scenario_json.get('EXCLUDED_POLL_ENGINES', [])
    }
     for scenario_json in scenario_config.CXXLanguage().scenarios()
diff --git a/test/cpp/util/grpc_tool.cc b/test/cpp/util/grpc_tool.cc
index bb6f878..cd6084a 100644
--- a/test/cpp/util/grpc_tool.cc
+++ b/test/cpp/util/grpc_tool.cc
@@ -58,6 +58,11 @@
 DEFINE_bool(binary_input, false, "Input in binary format");
 DEFINE_bool(binary_output, false, "Output in binary format");
 DEFINE_string(infile, "", "Input file (default is stdin)");
+DEFINE_bool(batch, false,
+            "Input contains multiple requests. Please do not use this to send "
+            "more than a few RPCs. gRPC CLI has very different performance "
+            "characteristics compared with normal RPC calls which make it "
+            "unsuitable for loadtesting or significant production traffic.");
 
 namespace {
 
@@ -460,12 +465,17 @@
     return false;
   }
 
+  if (argc == 3) {
+    request_text = argv[2];
+  }
+
   if (parser->IsStreaming(method_name, true /* is_request */)) {
     std::istream* input_stream;
     std::ifstream input_file;
 
-    if (argc == 3) {
-      request_text = argv[2];
+    if (FLAGS_batch) {
+      fprintf(stderr, "Batch mode for streaming RPC is not supported.\n");
+      return false;
     }
 
     std::multimap<grpc::string, grpc::string> client_metadata;
@@ -549,8 +559,115 @@
     }
 
   } else {  // parser->IsStreaming(method_name, true /* is_request */)
+    if (FLAGS_batch) {
+      if (parser->IsStreaming(method_name, false /* is_request */)) {
+        fprintf(stderr, "Batch mode for streaming RPC is not supported.\n");
+        return false;
+      }
+
+      std::istream* input_stream;
+      std::ifstream input_file;
+
+      if (FLAGS_infile.empty()) {
+        if (isatty(fileno(stdin))) {
+          print_mode = true;
+          fprintf(stderr, "reading request messages from stdin...\n");
+        }
+        input_stream = &std::cin;
+      } else {
+        input_file.open(FLAGS_infile, std::ios::in | std::ios::binary);
+        input_stream = &input_file;
+      }
+
+      std::multimap<grpc::string, grpc::string> client_metadata;
+      ParseMetadataFlag(&client_metadata);
+      if (print_mode) {
+        PrintMetadata(client_metadata, "Sending client initial metadata:");
+      }
+
+      std::stringstream request_ss;
+      grpc::string line;
+      while (!request_text.empty() ||
+             (!input_stream->eof() && getline(*input_stream, line))) {
+        if (!request_text.empty()) {
+          if (FLAGS_binary_input) {
+            serialized_request_proto = request_text;
+            request_text.clear();
+          } else {
+            serialized_request_proto = parser->GetSerializedProtoFromMethod(
+                method_name, request_text, true /* is_request */);
+            request_text.clear();
+            if (parser->HasError()) {
+              if (print_mode) {
+                fprintf(stderr, "Failed to parse request.\n");
+              }
+              continue;
+            }
+          }
+
+          grpc::string serialized_response_proto;
+          std::multimap<grpc::string_ref, grpc::string_ref>
+              server_initial_metadata, server_trailing_metadata;
+          CliCall call(channel, formatted_method_name, client_metadata);
+          call.Write(serialized_request_proto);
+          call.WritesDone();
+          if (!call.Read(&serialized_response_proto,
+                         &server_initial_metadata)) {
+            fprintf(stderr, "Failed to read response.\n");
+          }
+          Status status = call.Finish(&server_trailing_metadata);
+
+          if (status.ok()) {
+            if (print_mode) {
+              fprintf(stderr, "Rpc succeeded with OK status.\n");
+              PrintMetadata(server_initial_metadata,
+                            "Received initial metadata from server:");
+              PrintMetadata(server_trailing_metadata,
+                            "Received trailing metadata from server:");
+            }
+
+            if (FLAGS_binary_output) {
+              if (!callback(serialized_response_proto)) {
+                break;
+              }
+            } else {
+              grpc::string response_text = parser->GetTextFormatFromMethod(
+                  method_name, serialized_response_proto,
+                  false /* is_request */);
+              if (parser->HasError() && print_mode) {
+                fprintf(stderr, "Failed to parse response.\n");
+              } else {
+                if (!callback(response_text)) {
+                  break;
+                }
+              }
+            }
+          } else {
+            if (print_mode) {
+              fprintf(stderr,
+                      "Rpc failed with status code %d, error message: %s\n",
+                      status.error_code(), status.error_message().c_str());
+            }
+          }
+        } else {
+          if (line.length() == 0) {
+            request_text = request_ss.str();
+            request_ss.str(grpc::string());
+            request_ss.clear();
+          } else {
+            request_ss << line << ' ';
+          }
+        }
+      }
+
+      if (input_file.is_open()) {
+        input_file.close();
+      }
+
+      return true;
+    }
+
     if (argc == 3) {
-      request_text = argv[2];
       if (!FLAGS_infile.empty()) {
         fprintf(stderr, "warning: request given in argv, ignoring --infile\n");
       }
@@ -571,9 +688,7 @@
 
     if (FLAGS_binary_input) {
       serialized_request_proto = request_text;
-      // formatted_method_name = method_name;
     } else {
-      // formatted_method_name = parser->GetFormattedMethodName(method_name);
       serialized_request_proto = parser->GetSerializedProtoFromMethod(
           method_name, request_text, true /* is_request */);
       if (parser->HasError()) {
diff --git a/test/cpp/util/grpc_tool_test.cc b/test/cpp/util/grpc_tool_test.cc
index dd00581..d0b3d7b 100644
--- a/test/cpp/util/grpc_tool_test.cc
+++ b/test/cpp/util/grpc_tool_test.cc
@@ -84,6 +84,7 @@
 DECLARE_bool(binary_input);
 DECLARE_bool(binary_output);
 DECLARE_bool(l);
+DECLARE_bool(batch);
 
 namespace {
 
@@ -399,6 +400,60 @@
   ShutdownServer();
 }
 
+TEST_F(GrpcToolTest, CallCommandBatch) {
+  // Test input "grpc_cli call Echo"
+  std::stringstream output_stream;
+
+  const grpc::string server_address = SetUpServer();
+  const char* argv[] = {"grpc_cli", "call", server_address.c_str(), "Echo",
+                        "message: 'Hello0'"};
+
+  // Mock std::cin input "message: 'Hello1'\n\n message: 'Hello2'\n\n"
+  std::streambuf* orig = std::cin.rdbuf();
+  std::istringstream ss("message: 'Hello1'\n\n message: 'Hello2'\n\n");
+  std::cin.rdbuf(ss.rdbuf());
+
+  FLAGS_batch = true;
+  EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
+                                   std::bind(PrintStream, &output_stream,
+                                             std::placeholders::_1)));
+  FLAGS_batch = false;
+
+  // Expected output: "message: "Hello0"\nmessage: "Hello1"\nmessage:
+  // "Hello2"\n"
+  EXPECT_TRUE(NULL != strstr(output_stream.str().c_str(),
+                             "message: \"Hello0\"\nmessage: "
+                             "\"Hello1\"\nmessage: \"Hello2\"\n"));
+  std::cin.rdbuf(orig);
+  ShutdownServer();
+}
+
+TEST_F(GrpcToolTest, CallCommandBatchWithBadRequest) {
+  // Test input "grpc_cli call Echo"
+  std::stringstream output_stream;
+
+  const grpc::string server_address = SetUpServer();
+  const char* argv[] = {"grpc_cli", "call", server_address.c_str(), "Echo",
+                        "message: 'Hello0'"};
+
+  // Mock std::cin input "message: 1\n\n message: 'Hello2'\n\n"
+  std::streambuf* orig = std::cin.rdbuf();
+  std::istringstream ss("message: 1\n\n message: 'Hello2'\n\n");
+  std::cin.rdbuf(ss.rdbuf());
+
+  FLAGS_batch = true;
+  EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
+                                   std::bind(PrintStream, &output_stream,
+                                             std::placeholders::_1)));
+  FLAGS_batch = false;
+
+  // Expected output: "message: "Hello0"\nmessage: "Hello2"\n"
+  EXPECT_TRUE(NULL != strstr(output_stream.str().c_str(),
+                             "message: \"Hello0\"\nmessage: \"Hello2\"\n"));
+  std::cin.rdbuf(orig);
+  ShutdownServer();
+}
+
 TEST_F(GrpcToolTest, CallCommandRequestStream) {
   // Test input: grpc_cli call localhost:<port> RequestStream "message:
   // 'Hello0'"
diff --git a/third_party/bloaty b/third_party/bloaty
new file mode 160000
index 0000000..73594cd
--- /dev/null
+++ b/third_party/bloaty
@@ -0,0 +1 @@
+Subproject commit 73594cde8c9a52a102c4341c244c833aa61b9c06
diff --git a/tools/buildgen/plugins/expand_filegroups.py b/tools/buildgen/plugins/expand_filegroups.py
index dc073d7..6697040 100755
--- a/tools/buildgen/plugins/expand_filegroups.py
+++ b/tools/buildgen/plugins/expand_filegroups.py
@@ -146,7 +146,7 @@
         lib[lst] = vals
       lib['plugins'] = plugins
     if lib.get('generate_plugin_registry', False):
-      lib['src'].append('src/core/plugin_registry/%s_plugin_registry.c' %
+      lib['src'].append('src/core/plugin_registry/%s_plugin_registry.cc' %
                         lib['name'])
     for lst in FILEGROUP_LISTS:
       lib[lst] = uniquify(lib.get(lst, []))
diff --git a/tools/codegen/core/gen_static_metadata.py b/tools/codegen/core/gen_static_metadata.py
index af7521d..355f3f4 100755
--- a/tools/codegen/core/gen_static_metadata.py
+++ b/tools/codegen/core/gen_static_metadata.py
@@ -304,7 +304,7 @@
   C = open(
       os.path.join(
           os.path.dirname(sys.argv[0]),
-          '../../../src/core/lib/transport/static_metadata.c'), 'w')
+          '../../../src/core/lib/transport/static_metadata.cc'), 'w')
   D = open(
       os.path.join(
           os.path.dirname(sys.argv[0]),
@@ -354,6 +354,10 @@
 print >> H, '#ifndef GRPC_CORE_LIB_TRANSPORT_STATIC_METADATA_H'
 print >> H, '#define GRPC_CORE_LIB_TRANSPORT_STATIC_METADATA_H'
 print >> H
+print >> H, '#ifdef __cplusplus'
+print >> H, 'extern "C" {'
+print >> H, '#endif'
+print >> H
 print >> H, '#include "src/core/lib/transport/metadata.h"'
 print >> H
 
@@ -589,6 +593,10 @@
 
 print >> H, '#define GRPC_MDELEM_ACCEPT_STREAM_ENCODING_FOR_ALGORITHMS(algs) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[grpc_static_accept_stream_encoding_metadata[(algs)]], GRPC_MDELEM_STORAGE_STATIC))'
 
+print >> H, '#ifdef __cplusplus'
+print >> H, '}'
+print >> H, '#endif'
+
 print >> H, '#endif /* GRPC_CORE_LIB_TRANSPORT_STATIC_METADATA_H */'
 
 H.close()
diff --git a/tools/codegen/core/gen_stats_data.py b/tools/codegen/core/gen_stats_data.py
index 8359734..072a677 100755
--- a/tools/codegen/core/gen_stats_data.py
+++ b/tools/codegen/core/gen_stats_data.py
@@ -208,6 +208,10 @@
   print >>H, "#include <inttypes.h>"
   print >>H, "#include \"src/core/lib/iomgr/exec_ctx.h\""
   print >>H
+  print >>H, "#ifdef __cplusplus"
+  print >>H, "extern \"C\" {"
+  print >>H, "#endif"
+  print >>H
 
   for typename, instances in sorted(inst_map.items()):
     print >>H, "typedef enum {"
@@ -253,9 +257,13 @@
   print >>H, "extern void (*const grpc_stats_inc_histogram[%d])(grpc_exec_ctx *exec_ctx, int x);" % len(inst_map['Histogram'])
 
   print >>H
+  print >>H, "#ifdef __cplusplus"
+  print >>H, "}"
+  print >>H, "#endif"
+  print >>H
   print >>H, "#endif /* GRPC_CORE_LIB_DEBUG_STATS_DATA_H */"
 
-with open('src/core/lib/debug/stats_data.c', 'w') as C:
+with open('src/core/lib/debug/stats_data.cc', 'w') as C:
   # copy-paste copyright notice from this file
   with open(sys.argv[0]) as my_source:
     copyright = []
diff --git a/tools/distrib/build_ruby_environment_macos.sh b/tools/distrib/build_ruby_environment_macos.sh
index c2240ce..fe0c5a4 100644
--- a/tools/distrib/build_ruby_environment_macos.sh
+++ b/tools/distrib/build_ruby_environment_macos.sh
@@ -21,9 +21,10 @@
 
 curl https://raw.githubusercontent.com/rake-compiler/rake-compiler/v1.0.3/tasks/bin/cross-ruby.rake > $CROSS_RUBY
 
+# See https://github.com/grpc/grpc/issues/12161 for verconf.h patch details
 patch $CROSS_RUBY << EOF
---- cross-ruby.rake	2016-02-05 16:26:53.000000000 -0800
-+++ cross-ruby.rake.patched	2016-02-05 16:27:33.000000000 -0800
+--- cross-ruby.rake 2017-09-27 16:46:00.311020325 +0200
++++ patched 2017-09-27 16:49:46.127016895 +0200
 @@ -133,7 +133,8 @@
      "--host=#{MINGW_HOST}",
      "--target=#{MINGW_TARGET}",
@@ -32,8 +33,16 @@
 +    '--enable-static',
 +    '--disable-shared',
      '--disable-install-doc',
-     '--without-tk',
-     '--without-tcl'
+     '--with-ext='
+   ]
+@@ -151,6 +152,7 @@
+ # make
+ file "#{USER_HOME}/builds/#{MINGW_HOST}/#{RUBY_CC_VERSION}/ruby.exe" => ["#{USER_HOME}/builds/#{MINGW_HOST}/#{RUBY_CC_VERSION}/Makefile"] do |t|
+   chdir File.dirname(t.prerequisites.first) do
++    sh "test -s verconf.h || rm -f verconf.h"  # if verconf.h has size 0, make sure it gets re-built by make
+     sh MAKE
+   end
+ end
 EOF
 
 MAKE="make -j8"
diff --git a/tools/distrib/python/grpcio_tools/grpc_version.py b/tools/distrib/python/grpcio_tools/grpc_version.py
index a4178a5..db92b10 100644
--- a/tools/distrib/python/grpcio_tools/grpc_version.py
+++ b/tools/distrib/python/grpcio_tools/grpc_version.py
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
 
-VERSION='1.7.0.dev0'
+VERSION='1.8.0.dev0'
diff --git a/tools/dockerfile/test/multilang_jessie_x64/Dockerfile b/tools/dockerfile/test/multilang_jessie_x64/Dockerfile
index 1a4b681..8e29fcb 100644
--- a/tools/dockerfile/test/multilang_jessie_x64/Dockerfile
+++ b/tools/dockerfile/test/multilang_jessie_x64/Dockerfile
@@ -71,6 +71,24 @@
 
 RUN nuget update -self
 
+# Install dotnet SDK based on https://www.microsoft.com/net/core#debian
+RUN apt-get update && apt-get install -y curl libunwind8 gettext
+# dotnet-dev-1.0.0-preview2-003131
+RUN curl -sSL -o dotnet100.tar.gz https://go.microsoft.com/fwlink/?LinkID=827530
+RUN mkdir -p /opt/dotnet && tar zxf dotnet100.tar.gz -C /opt/dotnet
+# dotnet-dev-1.0.1
+RUN curl -sSL -o dotnet101.tar.gz https://go.microsoft.com/fwlink/?LinkID=843453
+RUN mkdir -p /opt/dotnet && tar zxf dotnet101.tar.gz -C /opt/dotnet
+RUN ln -s /opt/dotnet/dotnet /usr/local/bin
+
+# Trigger the population of the local package cache
+ENV NUGET_XMLDOC_MODE skip
+RUN mkdir warmup \
+    && cd warmup \
+    && dotnet new \
+    && cd .. \
+    && rm -rf warmup
+
 #=================
 # C++ dependencies
 RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang && apt-get clean
diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++
index d81b7b4..eb27eed 100644
--- a/tools/doxygen/Doxyfile.c++
+++ b/tools/doxygen/Doxyfile.c++
@@ -40,7 +40,7 @@
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 1.7.0-dev
+PROJECT_NUMBER         = 1.8.0-dev
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal
index eacb40c..584dd0a 100644
--- a/tools/doxygen/Doxyfile.c++.internal
+++ b/tools/doxygen/Doxyfile.c++.internal
@@ -40,7 +40,7 @@
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 1.7.0-dev
+PROJECT_NUMBER         = 1.8.0-dev
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index 33cafac..ee593e3 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -872,565 +872,565 @@
 src/core/ext/README.md \
 src/core/ext/census/README.md \
 src/core/ext/census/aggregation.h \
-src/core/ext/census/base_resources.c \
+src/core/ext/census/base_resources.cc \
 src/core/ext/census/base_resources.h \
 src/core/ext/census/census_interface.h \
 src/core/ext/census/census_rpc_stats.h \
-src/core/ext/census/context.c \
+src/core/ext/census/context.cc \
 src/core/ext/census/gen/README.md \
 src/core/ext/census/gen/census.pb.c \
 src/core/ext/census/gen/census.pb.h \
 src/core/ext/census/gen/trace_context.pb.c \
 src/core/ext/census/gen/trace_context.pb.h \
-src/core/ext/census/grpc_context.c \
-src/core/ext/census/grpc_filter.c \
+src/core/ext/census/grpc_context.cc \
+src/core/ext/census/grpc_filter.cc \
 src/core/ext/census/grpc_filter.h \
-src/core/ext/census/grpc_plugin.c \
-src/core/ext/census/initialize.c \
-src/core/ext/census/intrusive_hash_map.c \
+src/core/ext/census/grpc_plugin.cc \
+src/core/ext/census/initialize.cc \
+src/core/ext/census/intrusive_hash_map.cc \
 src/core/ext/census/intrusive_hash_map.h \
 src/core/ext/census/intrusive_hash_map_internal.h \
-src/core/ext/census/mlog.c \
+src/core/ext/census/mlog.cc \
 src/core/ext/census/mlog.h \
-src/core/ext/census/operation.c \
-src/core/ext/census/placeholders.c \
-src/core/ext/census/resource.c \
+src/core/ext/census/operation.cc \
+src/core/ext/census/placeholders.cc \
+src/core/ext/census/resource.cc \
 src/core/ext/census/resource.h \
 src/core/ext/census/rpc_metric_id.h \
-src/core/ext/census/trace_context.c \
+src/core/ext/census/trace_context.cc \
 src/core/ext/census/trace_context.h \
 src/core/ext/census/trace_label.h \
 src/core/ext/census/trace_propagation.h \
 src/core/ext/census/trace_status.h \
 src/core/ext/census/trace_string.h \
-src/core/ext/census/tracing.c \
+src/core/ext/census/tracing.cc \
 src/core/ext/census/tracing.h \
 src/core/ext/filters/client_channel/README.md \
-src/core/ext/filters/client_channel/channel_connectivity.c \
-src/core/ext/filters/client_channel/client_channel.c \
+src/core/ext/filters/client_channel/channel_connectivity.cc \
+src/core/ext/filters/client_channel/client_channel.cc \
 src/core/ext/filters/client_channel/client_channel.h \
-src/core/ext/filters/client_channel/client_channel_factory.c \
+src/core/ext/filters/client_channel/client_channel_factory.cc \
 src/core/ext/filters/client_channel/client_channel_factory.h \
-src/core/ext/filters/client_channel/client_channel_plugin.c \
-src/core/ext/filters/client_channel/connector.c \
+src/core/ext/filters/client_channel/client_channel_plugin.cc \
+src/core/ext/filters/client_channel/connector.cc \
 src/core/ext/filters/client_channel/connector.h \
-src/core/ext/filters/client_channel/http_connect_handshaker.c \
+src/core/ext/filters/client_channel/http_connect_handshaker.cc \
 src/core/ext/filters/client_channel/http_connect_handshaker.h \
-src/core/ext/filters/client_channel/http_proxy.c \
+src/core/ext/filters/client_channel/http_proxy.cc \
 src/core/ext/filters/client_channel/http_proxy.h \
-src/core/ext/filters/client_channel/lb_policy.c \
+src/core/ext/filters/client_channel/lb_policy.cc \
 src/core/ext/filters/client_channel/lb_policy.h \
-src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c \
+src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc \
 src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h \
-src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c \
+src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc \
 src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h \
 src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h \
-src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c \
-src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c \
+src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc \
+src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc \
 src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h \
-src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c \
+src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc \
 src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h \
 src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c \
 src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h \
-src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c \
-src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c \
-src/core/ext/filters/client_channel/lb_policy_factory.c \
+src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc \
+src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc \
+src/core/ext/filters/client_channel/lb_policy_factory.cc \
 src/core/ext/filters/client_channel/lb_policy_factory.h \
-src/core/ext/filters/client_channel/lb_policy_registry.c \
+src/core/ext/filters/client_channel/lb_policy_registry.cc \
 src/core/ext/filters/client_channel/lb_policy_registry.h \
-src/core/ext/filters/client_channel/parse_address.c \
+src/core/ext/filters/client_channel/parse_address.cc \
 src/core/ext/filters/client_channel/parse_address.h \
-src/core/ext/filters/client_channel/proxy_mapper.c \
+src/core/ext/filters/client_channel/proxy_mapper.cc \
 src/core/ext/filters/client_channel/proxy_mapper.h \
-src/core/ext/filters/client_channel/proxy_mapper_registry.c \
+src/core/ext/filters/client_channel/proxy_mapper_registry.cc \
 src/core/ext/filters/client_channel/proxy_mapper_registry.h \
-src/core/ext/filters/client_channel/resolver.c \
+src/core/ext/filters/client_channel/resolver.cc \
 src/core/ext/filters/client_channel/resolver.h \
 src/core/ext/filters/client_channel/resolver/README.md \
-src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c \
+src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc \
 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h \
-src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c \
-src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c \
+src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc \
+src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc \
 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h \
-src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c \
+src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc \
 src/core/ext/filters/client_channel/resolver/dns/native/README.md \
-src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c \
-src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c \
+src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc \
+src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc \
 src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h \
 src/core/ext/filters/client_channel/resolver/sockaddr/README.md \
-src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c \
-src/core/ext/filters/client_channel/resolver_factory.c \
+src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc \
+src/core/ext/filters/client_channel/resolver_factory.cc \
 src/core/ext/filters/client_channel/resolver_factory.h \
-src/core/ext/filters/client_channel/resolver_registry.c \
+src/core/ext/filters/client_channel/resolver_registry.cc \
 src/core/ext/filters/client_channel/resolver_registry.h \
-src/core/ext/filters/client_channel/retry_throttle.c \
+src/core/ext/filters/client_channel/retry_throttle.cc \
 src/core/ext/filters/client_channel/retry_throttle.h \
-src/core/ext/filters/client_channel/subchannel.c \
+src/core/ext/filters/client_channel/subchannel.cc \
 src/core/ext/filters/client_channel/subchannel.h \
-src/core/ext/filters/client_channel/subchannel_index.c \
+src/core/ext/filters/client_channel/subchannel_index.cc \
 src/core/ext/filters/client_channel/subchannel_index.h \
-src/core/ext/filters/client_channel/uri_parser.c \
+src/core/ext/filters/client_channel/uri_parser.cc \
 src/core/ext/filters/client_channel/uri_parser.h \
-src/core/ext/filters/deadline/deadline_filter.c \
+src/core/ext/filters/deadline/deadline_filter.cc \
 src/core/ext/filters/deadline/deadline_filter.h \
-src/core/ext/filters/http/client/http_client_filter.c \
+src/core/ext/filters/http/client/http_client_filter.cc \
 src/core/ext/filters/http/client/http_client_filter.h \
-src/core/ext/filters/http/http_filters_plugin.c \
-src/core/ext/filters/http/message_compress/message_compress_filter.c \
+src/core/ext/filters/http/http_filters_plugin.cc \
+src/core/ext/filters/http/message_compress/message_compress_filter.cc \
 src/core/ext/filters/http/message_compress/message_compress_filter.h \
-src/core/ext/filters/http/server/http_server_filter.c \
+src/core/ext/filters/http/server/http_server_filter.cc \
 src/core/ext/filters/http/server/http_server_filter.h \
-src/core/ext/filters/load_reporting/server_load_reporting_filter.c \
+src/core/ext/filters/load_reporting/server_load_reporting_filter.cc \
 src/core/ext/filters/load_reporting/server_load_reporting_filter.h \
-src/core/ext/filters/load_reporting/server_load_reporting_plugin.c \
+src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc \
 src/core/ext/filters/load_reporting/server_load_reporting_plugin.h \
-src/core/ext/filters/max_age/max_age_filter.c \
+src/core/ext/filters/max_age/max_age_filter.cc \
 src/core/ext/filters/max_age/max_age_filter.h \
-src/core/ext/filters/message_size/message_size_filter.c \
+src/core/ext/filters/message_size/message_size_filter.cc \
 src/core/ext/filters/message_size/message_size_filter.h \
-src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c \
+src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc \
 src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h \
-src/core/ext/filters/workarounds/workaround_utils.c \
+src/core/ext/filters/workarounds/workaround_utils.cc \
 src/core/ext/filters/workarounds/workaround_utils.h \
 src/core/ext/transport/README.md \
 src/core/ext/transport/chttp2/README.md \
-src/core/ext/transport/chttp2/alpn/alpn.c \
+src/core/ext/transport/chttp2/alpn/alpn.cc \
 src/core/ext/transport/chttp2/alpn/alpn.h \
-src/core/ext/transport/chttp2/client/chttp2_connector.c \
+src/core/ext/transport/chttp2/client/chttp2_connector.cc \
 src/core/ext/transport/chttp2/client/chttp2_connector.h \
 src/core/ext/transport/chttp2/client/insecure/README.md \
-src/core/ext/transport/chttp2/client/insecure/channel_create.c \
-src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c \
+src/core/ext/transport/chttp2/client/insecure/channel_create.cc \
+src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc \
 src/core/ext/transport/chttp2/client/secure/README.md \
-src/core/ext/transport/chttp2/client/secure/secure_channel_create.c \
-src/core/ext/transport/chttp2/server/chttp2_server.c \
+src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc \
+src/core/ext/transport/chttp2/server/chttp2_server.cc \
 src/core/ext/transport/chttp2/server/chttp2_server.h \
 src/core/ext/transport/chttp2/server/insecure/README.md \
-src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
-src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c \
+src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc \
+src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc \
 src/core/ext/transport/chttp2/server/secure/README.md \
-src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c \
+src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc \
 src/core/ext/transport/chttp2/transport/README.md \
-src/core/ext/transport/chttp2/transport/bin_decoder.c \
+src/core/ext/transport/chttp2/transport/bin_decoder.cc \
 src/core/ext/transport/chttp2/transport/bin_decoder.h \
-src/core/ext/transport/chttp2/transport/bin_encoder.c \
+src/core/ext/transport/chttp2/transport/bin_encoder.cc \
 src/core/ext/transport/chttp2/transport/bin_encoder.h \
-src/core/ext/transport/chttp2/transport/chttp2_plugin.c \
-src/core/ext/transport/chttp2/transport/chttp2_transport.c \
+src/core/ext/transport/chttp2/transport/chttp2_plugin.cc \
+src/core/ext/transport/chttp2/transport/chttp2_transport.cc \
 src/core/ext/transport/chttp2/transport/chttp2_transport.h \
-src/core/ext/transport/chttp2/transport/flow_control.c \
+src/core/ext/transport/chttp2/transport/flow_control.cc \
 src/core/ext/transport/chttp2/transport/frame.h \
-src/core/ext/transport/chttp2/transport/frame_data.c \
+src/core/ext/transport/chttp2/transport/frame_data.cc \
 src/core/ext/transport/chttp2/transport/frame_data.h \
-src/core/ext/transport/chttp2/transport/frame_goaway.c \
+src/core/ext/transport/chttp2/transport/frame_goaway.cc \
 src/core/ext/transport/chttp2/transport/frame_goaway.h \
-src/core/ext/transport/chttp2/transport/frame_ping.c \
+src/core/ext/transport/chttp2/transport/frame_ping.cc \
 src/core/ext/transport/chttp2/transport/frame_ping.h \
-src/core/ext/transport/chttp2/transport/frame_rst_stream.c \
+src/core/ext/transport/chttp2/transport/frame_rst_stream.cc \
 src/core/ext/transport/chttp2/transport/frame_rst_stream.h \
-src/core/ext/transport/chttp2/transport/frame_settings.c \
+src/core/ext/transport/chttp2/transport/frame_settings.cc \
 src/core/ext/transport/chttp2/transport/frame_settings.h \
-src/core/ext/transport/chttp2/transport/frame_window_update.c \
+src/core/ext/transport/chttp2/transport/frame_window_update.cc \
 src/core/ext/transport/chttp2/transport/frame_window_update.h \
-src/core/ext/transport/chttp2/transport/hpack_encoder.c \
+src/core/ext/transport/chttp2/transport/hpack_encoder.cc \
 src/core/ext/transport/chttp2/transport/hpack_encoder.h \
-src/core/ext/transport/chttp2/transport/hpack_parser.c \
+src/core/ext/transport/chttp2/transport/hpack_parser.cc \
 src/core/ext/transport/chttp2/transport/hpack_parser.h \
-src/core/ext/transport/chttp2/transport/hpack_table.c \
+src/core/ext/transport/chttp2/transport/hpack_table.cc \
 src/core/ext/transport/chttp2/transport/hpack_table.h \
-src/core/ext/transport/chttp2/transport/http2_settings.c \
+src/core/ext/transport/chttp2/transport/http2_settings.cc \
 src/core/ext/transport/chttp2/transport/http2_settings.h \
-src/core/ext/transport/chttp2/transport/huffsyms.c \
+src/core/ext/transport/chttp2/transport/huffsyms.cc \
 src/core/ext/transport/chttp2/transport/huffsyms.h \
-src/core/ext/transport/chttp2/transport/incoming_metadata.c \
+src/core/ext/transport/chttp2/transport/incoming_metadata.cc \
 src/core/ext/transport/chttp2/transport/incoming_metadata.h \
 src/core/ext/transport/chttp2/transport/internal.h \
-src/core/ext/transport/chttp2/transport/parsing.c \
-src/core/ext/transport/chttp2/transport/stream_lists.c \
-src/core/ext/transport/chttp2/transport/stream_map.c \
+src/core/ext/transport/chttp2/transport/parsing.cc \
+src/core/ext/transport/chttp2/transport/stream_lists.cc \
+src/core/ext/transport/chttp2/transport/stream_map.cc \
 src/core/ext/transport/chttp2/transport/stream_map.h \
-src/core/ext/transport/chttp2/transport/varint.c \
+src/core/ext/transport/chttp2/transport/varint.cc \
 src/core/ext/transport/chttp2/transport/varint.h \
-src/core/ext/transport/chttp2/transport/writing.c \
-src/core/ext/transport/inproc/inproc_plugin.c \
-src/core/ext/transport/inproc/inproc_transport.c \
+src/core/ext/transport/chttp2/transport/writing.cc \
+src/core/ext/transport/inproc/inproc_plugin.cc \
+src/core/ext/transport/inproc/inproc_transport.cc \
 src/core/ext/transport/inproc/inproc_transport.h \
 src/core/lib/README.md \
 src/core/lib/channel/README.md \
-src/core/lib/channel/channel_args.c \
+src/core/lib/channel/channel_args.cc \
 src/core/lib/channel/channel_args.h \
-src/core/lib/channel/channel_stack.c \
+src/core/lib/channel/channel_stack.cc \
 src/core/lib/channel/channel_stack.h \
-src/core/lib/channel/channel_stack_builder.c \
+src/core/lib/channel/channel_stack_builder.cc \
 src/core/lib/channel/channel_stack_builder.h \
-src/core/lib/channel/connected_channel.c \
+src/core/lib/channel/connected_channel.cc \
 src/core/lib/channel/connected_channel.h \
 src/core/lib/channel/context.h \
-src/core/lib/channel/handshaker.c \
+src/core/lib/channel/handshaker.cc \
 src/core/lib/channel/handshaker.h \
-src/core/lib/channel/handshaker_factory.c \
+src/core/lib/channel/handshaker_factory.cc \
 src/core/lib/channel/handshaker_factory.h \
-src/core/lib/channel/handshaker_registry.c \
+src/core/lib/channel/handshaker_registry.cc \
 src/core/lib/channel/handshaker_registry.h \
 src/core/lib/compression/algorithm_metadata.h \
-src/core/lib/compression/compression.c \
-src/core/lib/compression/message_compress.c \
+src/core/lib/compression/compression.cc \
+src/core/lib/compression/message_compress.cc \
 src/core/lib/compression/message_compress.h \
-src/core/lib/compression/stream_compression.c \
+src/core/lib/compression/stream_compression.cc \
 src/core/lib/compression/stream_compression.h \
-src/core/lib/compression/stream_compression_gzip.c \
+src/core/lib/compression/stream_compression_gzip.cc \
 src/core/lib/compression/stream_compression_gzip.h \
-src/core/lib/compression/stream_compression_identity.c \
+src/core/lib/compression/stream_compression_identity.cc \
 src/core/lib/compression/stream_compression_identity.h \
-src/core/lib/debug/stats.c \
+src/core/lib/debug/stats.cc \
 src/core/lib/debug/stats.h \
-src/core/lib/debug/stats_data.c \
+src/core/lib/debug/stats_data.cc \
 src/core/lib/debug/stats_data.h \
-src/core/lib/debug/trace.c \
+src/core/lib/debug/trace.cc \
 src/core/lib/debug/trace.h \
-src/core/lib/http/format_request.c \
+src/core/lib/http/format_request.cc \
 src/core/lib/http/format_request.h \
-src/core/lib/http/httpcli.c \
+src/core/lib/http/httpcli.cc \
 src/core/lib/http/httpcli.h \
-src/core/lib/http/httpcli_security_connector.c \
-src/core/lib/http/parser.c \
+src/core/lib/http/httpcli_security_connector.cc \
+src/core/lib/http/parser.cc \
 src/core/lib/http/parser.h \
 src/core/lib/iomgr/README.md \
-src/core/lib/iomgr/call_combiner.c \
+src/core/lib/iomgr/call_combiner.cc \
 src/core/lib/iomgr/call_combiner.h \
-src/core/lib/iomgr/closure.c \
+src/core/lib/iomgr/closure.cc \
 src/core/lib/iomgr/closure.h \
-src/core/lib/iomgr/combiner.c \
+src/core/lib/iomgr/combiner.cc \
 src/core/lib/iomgr/combiner.h \
-src/core/lib/iomgr/endpoint.c \
+src/core/lib/iomgr/endpoint.cc \
 src/core/lib/iomgr/endpoint.h \
 src/core/lib/iomgr/endpoint_pair.h \
-src/core/lib/iomgr/endpoint_pair_posix.c \
-src/core/lib/iomgr/endpoint_pair_uv.c \
-src/core/lib/iomgr/endpoint_pair_windows.c \
-src/core/lib/iomgr/error.c \
+src/core/lib/iomgr/endpoint_pair_posix.cc \
+src/core/lib/iomgr/endpoint_pair_uv.cc \
+src/core/lib/iomgr/endpoint_pair_windows.cc \
+src/core/lib/iomgr/error.cc \
 src/core/lib/iomgr/error.h \
 src/core/lib/iomgr/error_internal.h \
-src/core/lib/iomgr/ev_epoll1_linux.c \
+src/core/lib/iomgr/ev_epoll1_linux.cc \
 src/core/lib/iomgr/ev_epoll1_linux.h \
-src/core/lib/iomgr/ev_epollex_linux.c \
+src/core/lib/iomgr/ev_epollex_linux.cc \
 src/core/lib/iomgr/ev_epollex_linux.h \
-src/core/lib/iomgr/ev_epollsig_linux.c \
+src/core/lib/iomgr/ev_epollsig_linux.cc \
 src/core/lib/iomgr/ev_epollsig_linux.h \
-src/core/lib/iomgr/ev_poll_posix.c \
+src/core/lib/iomgr/ev_poll_posix.cc \
 src/core/lib/iomgr/ev_poll_posix.h \
-src/core/lib/iomgr/ev_posix.c \
+src/core/lib/iomgr/ev_posix.cc \
 src/core/lib/iomgr/ev_posix.h \
-src/core/lib/iomgr/ev_windows.c \
-src/core/lib/iomgr/exec_ctx.c \
+src/core/lib/iomgr/ev_windows.cc \
+src/core/lib/iomgr/exec_ctx.cc \
 src/core/lib/iomgr/exec_ctx.h \
-src/core/lib/iomgr/executor.c \
+src/core/lib/iomgr/executor.cc \
 src/core/lib/iomgr/executor.h \
 src/core/lib/iomgr/gethostname.h \
-src/core/lib/iomgr/gethostname_fallback.c \
-src/core/lib/iomgr/gethostname_host_name_max.c \
-src/core/lib/iomgr/gethostname_sysconf.c \
-src/core/lib/iomgr/iocp_windows.c \
+src/core/lib/iomgr/gethostname_fallback.cc \
+src/core/lib/iomgr/gethostname_host_name_max.cc \
+src/core/lib/iomgr/gethostname_sysconf.cc \
+src/core/lib/iomgr/iocp_windows.cc \
 src/core/lib/iomgr/iocp_windows.h \
-src/core/lib/iomgr/iomgr.c \
+src/core/lib/iomgr/iomgr.cc \
 src/core/lib/iomgr/iomgr.h \
 src/core/lib/iomgr/iomgr_internal.h \
-src/core/lib/iomgr/iomgr_posix.c \
+src/core/lib/iomgr/iomgr_posix.cc \
 src/core/lib/iomgr/iomgr_posix.h \
-src/core/lib/iomgr/iomgr_uv.c \
+src/core/lib/iomgr/iomgr_uv.cc \
 src/core/lib/iomgr/iomgr_uv.h \
-src/core/lib/iomgr/iomgr_windows.c \
-src/core/lib/iomgr/is_epollexclusive_available.c \
+src/core/lib/iomgr/iomgr_windows.cc \
+src/core/lib/iomgr/is_epollexclusive_available.cc \
 src/core/lib/iomgr/is_epollexclusive_available.h \
-src/core/lib/iomgr/load_file.c \
+src/core/lib/iomgr/load_file.cc \
 src/core/lib/iomgr/load_file.h \
-src/core/lib/iomgr/lockfree_event.c \
+src/core/lib/iomgr/lockfree_event.cc \
 src/core/lib/iomgr/lockfree_event.h \
 src/core/lib/iomgr/nameser.h \
-src/core/lib/iomgr/network_status_tracker.c \
+src/core/lib/iomgr/network_status_tracker.cc \
 src/core/lib/iomgr/network_status_tracker.h \
-src/core/lib/iomgr/polling_entity.c \
+src/core/lib/iomgr/polling_entity.cc \
 src/core/lib/iomgr/polling_entity.h \
 src/core/lib/iomgr/pollset.h \
 src/core/lib/iomgr/pollset_set.h \
-src/core/lib/iomgr/pollset_set_uv.c \
-src/core/lib/iomgr/pollset_set_windows.c \
+src/core/lib/iomgr/pollset_set_uv.cc \
+src/core/lib/iomgr/pollset_set_windows.cc \
 src/core/lib/iomgr/pollset_set_windows.h \
-src/core/lib/iomgr/pollset_uv.c \
+src/core/lib/iomgr/pollset_uv.cc \
 src/core/lib/iomgr/pollset_uv.h \
-src/core/lib/iomgr/pollset_windows.c \
+src/core/lib/iomgr/pollset_windows.cc \
 src/core/lib/iomgr/pollset_windows.h \
 src/core/lib/iomgr/port.h \
 src/core/lib/iomgr/resolve_address.h \
-src/core/lib/iomgr/resolve_address_posix.c \
-src/core/lib/iomgr/resolve_address_uv.c \
-src/core/lib/iomgr/resolve_address_windows.c \
-src/core/lib/iomgr/resource_quota.c \
+src/core/lib/iomgr/resolve_address_posix.cc \
+src/core/lib/iomgr/resolve_address_uv.cc \
+src/core/lib/iomgr/resolve_address_windows.cc \
+src/core/lib/iomgr/resource_quota.cc \
 src/core/lib/iomgr/resource_quota.h \
 src/core/lib/iomgr/sockaddr.h \
 src/core/lib/iomgr/sockaddr_posix.h \
-src/core/lib/iomgr/sockaddr_utils.c \
+src/core/lib/iomgr/sockaddr_utils.cc \
 src/core/lib/iomgr/sockaddr_utils.h \
 src/core/lib/iomgr/sockaddr_windows.h \
-src/core/lib/iomgr/socket_factory_posix.c \
+src/core/lib/iomgr/socket_factory_posix.cc \
 src/core/lib/iomgr/socket_factory_posix.h \
-src/core/lib/iomgr/socket_mutator.c \
+src/core/lib/iomgr/socket_mutator.cc \
 src/core/lib/iomgr/socket_mutator.h \
 src/core/lib/iomgr/socket_utils.h \
-src/core/lib/iomgr/socket_utils_common_posix.c \
-src/core/lib/iomgr/socket_utils_linux.c \
-src/core/lib/iomgr/socket_utils_posix.c \
+src/core/lib/iomgr/socket_utils_common_posix.cc \
+src/core/lib/iomgr/socket_utils_linux.cc \
+src/core/lib/iomgr/socket_utils_posix.cc \
 src/core/lib/iomgr/socket_utils_posix.h \
-src/core/lib/iomgr/socket_utils_uv.c \
-src/core/lib/iomgr/socket_utils_windows.c \
-src/core/lib/iomgr/socket_windows.c \
+src/core/lib/iomgr/socket_utils_uv.cc \
+src/core/lib/iomgr/socket_utils_windows.cc \
+src/core/lib/iomgr/socket_windows.cc \
 src/core/lib/iomgr/socket_windows.h \
 src/core/lib/iomgr/sys_epoll_wrapper.h \
 src/core/lib/iomgr/tcp_client.h \
-src/core/lib/iomgr/tcp_client_posix.c \
+src/core/lib/iomgr/tcp_client_posix.cc \
 src/core/lib/iomgr/tcp_client_posix.h \
-src/core/lib/iomgr/tcp_client_uv.c \
-src/core/lib/iomgr/tcp_client_windows.c \
-src/core/lib/iomgr/tcp_posix.c \
+src/core/lib/iomgr/tcp_client_uv.cc \
+src/core/lib/iomgr/tcp_client_windows.cc \
+src/core/lib/iomgr/tcp_posix.cc \
 src/core/lib/iomgr/tcp_posix.h \
 src/core/lib/iomgr/tcp_server.h \
-src/core/lib/iomgr/tcp_server_posix.c \
+src/core/lib/iomgr/tcp_server_posix.cc \
 src/core/lib/iomgr/tcp_server_utils_posix.h \
-src/core/lib/iomgr/tcp_server_utils_posix_common.c \
-src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c \
-src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c \
-src/core/lib/iomgr/tcp_server_uv.c \
-src/core/lib/iomgr/tcp_server_windows.c \
-src/core/lib/iomgr/tcp_uv.c \
+src/core/lib/iomgr/tcp_server_utils_posix_common.cc \
+src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc \
+src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc \
+src/core/lib/iomgr/tcp_server_uv.cc \
+src/core/lib/iomgr/tcp_server_windows.cc \
+src/core/lib/iomgr/tcp_uv.cc \
 src/core/lib/iomgr/tcp_uv.h \
-src/core/lib/iomgr/tcp_windows.c \
+src/core/lib/iomgr/tcp_windows.cc \
 src/core/lib/iomgr/tcp_windows.h \
-src/core/lib/iomgr/time_averaged_stats.c \
+src/core/lib/iomgr/time_averaged_stats.cc \
 src/core/lib/iomgr/time_averaged_stats.h \
 src/core/lib/iomgr/timer.h \
-src/core/lib/iomgr/timer_generic.c \
+src/core/lib/iomgr/timer_generic.cc \
 src/core/lib/iomgr/timer_generic.h \
-src/core/lib/iomgr/timer_heap.c \
+src/core/lib/iomgr/timer_heap.cc \
 src/core/lib/iomgr/timer_heap.h \
-src/core/lib/iomgr/timer_manager.c \
+src/core/lib/iomgr/timer_manager.cc \
 src/core/lib/iomgr/timer_manager.h \
-src/core/lib/iomgr/timer_uv.c \
+src/core/lib/iomgr/timer_uv.cc \
 src/core/lib/iomgr/timer_uv.h \
-src/core/lib/iomgr/udp_server.c \
+src/core/lib/iomgr/udp_server.cc \
 src/core/lib/iomgr/udp_server.h \
-src/core/lib/iomgr/unix_sockets_posix.c \
+src/core/lib/iomgr/unix_sockets_posix.cc \
 src/core/lib/iomgr/unix_sockets_posix.h \
-src/core/lib/iomgr/unix_sockets_posix_noop.c \
-src/core/lib/iomgr/wakeup_fd_cv.c \
+src/core/lib/iomgr/unix_sockets_posix_noop.cc \
+src/core/lib/iomgr/wakeup_fd_cv.cc \
 src/core/lib/iomgr/wakeup_fd_cv.h \
-src/core/lib/iomgr/wakeup_fd_eventfd.c \
-src/core/lib/iomgr/wakeup_fd_nospecial.c \
-src/core/lib/iomgr/wakeup_fd_pipe.c \
+src/core/lib/iomgr/wakeup_fd_eventfd.cc \
+src/core/lib/iomgr/wakeup_fd_nospecial.cc \
+src/core/lib/iomgr/wakeup_fd_pipe.cc \
 src/core/lib/iomgr/wakeup_fd_pipe.h \
-src/core/lib/iomgr/wakeup_fd_posix.c \
+src/core/lib/iomgr/wakeup_fd_posix.cc \
 src/core/lib/iomgr/wakeup_fd_posix.h \
-src/core/lib/json/json.c \
+src/core/lib/json/json.cc \
 src/core/lib/json/json.h \
 src/core/lib/json/json_common.h \
-src/core/lib/json/json_reader.c \
+src/core/lib/json/json_reader.cc \
 src/core/lib/json/json_reader.h \
-src/core/lib/json/json_string.c \
-src/core/lib/json/json_writer.c \
+src/core/lib/json/json_string.cc \
+src/core/lib/json/json_writer.cc \
 src/core/lib/json/json_writer.h \
-src/core/lib/profiling/basic_timers.c \
-src/core/lib/profiling/stap_timers.c \
+src/core/lib/profiling/basic_timers.cc \
+src/core/lib/profiling/stap_timers.cc \
 src/core/lib/profiling/timers.h \
-src/core/lib/security/context/security_context.c \
+src/core/lib/security/context/security_context.cc \
 src/core/lib/security/context/security_context.h \
-src/core/lib/security/credentials/composite/composite_credentials.c \
+src/core/lib/security/credentials/composite/composite_credentials.cc \
 src/core/lib/security/credentials/composite/composite_credentials.h \
-src/core/lib/security/credentials/credentials.c \
+src/core/lib/security/credentials/credentials.cc \
 src/core/lib/security/credentials/credentials.h \
-src/core/lib/security/credentials/credentials_metadata.c \
-src/core/lib/security/credentials/fake/fake_credentials.c \
+src/core/lib/security/credentials/credentials_metadata.cc \
+src/core/lib/security/credentials/fake/fake_credentials.cc \
 src/core/lib/security/credentials/fake/fake_credentials.h \
-src/core/lib/security/credentials/google_default/credentials_generic.c \
-src/core/lib/security/credentials/google_default/google_default_credentials.c \
+src/core/lib/security/credentials/google_default/credentials_generic.cc \
+src/core/lib/security/credentials/google_default/google_default_credentials.cc \
 src/core/lib/security/credentials/google_default/google_default_credentials.h \
-src/core/lib/security/credentials/iam/iam_credentials.c \
+src/core/lib/security/credentials/iam/iam_credentials.cc \
 src/core/lib/security/credentials/iam/iam_credentials.h \
-src/core/lib/security/credentials/jwt/json_token.c \
+src/core/lib/security/credentials/jwt/json_token.cc \
 src/core/lib/security/credentials/jwt/json_token.h \
-src/core/lib/security/credentials/jwt/jwt_credentials.c \
+src/core/lib/security/credentials/jwt/jwt_credentials.cc \
 src/core/lib/security/credentials/jwt/jwt_credentials.h \
-src/core/lib/security/credentials/jwt/jwt_verifier.c \
+src/core/lib/security/credentials/jwt/jwt_verifier.cc \
 src/core/lib/security/credentials/jwt/jwt_verifier.h \
-src/core/lib/security/credentials/oauth2/oauth2_credentials.c \
+src/core/lib/security/credentials/oauth2/oauth2_credentials.cc \
 src/core/lib/security/credentials/oauth2/oauth2_credentials.h \
-src/core/lib/security/credentials/plugin/plugin_credentials.c \
+src/core/lib/security/credentials/plugin/plugin_credentials.cc \
 src/core/lib/security/credentials/plugin/plugin_credentials.h \
-src/core/lib/security/credentials/ssl/ssl_credentials.c \
+src/core/lib/security/credentials/ssl/ssl_credentials.cc \
 src/core/lib/security/credentials/ssl/ssl_credentials.h \
 src/core/lib/security/transport/auth_filters.h \
-src/core/lib/security/transport/client_auth_filter.c \
-src/core/lib/security/transport/lb_targets_info.c \
+src/core/lib/security/transport/client_auth_filter.cc \
+src/core/lib/security/transport/lb_targets_info.cc \
 src/core/lib/security/transport/lb_targets_info.h \
-src/core/lib/security/transport/secure_endpoint.c \
+src/core/lib/security/transport/secure_endpoint.cc \
 src/core/lib/security/transport/secure_endpoint.h \
-src/core/lib/security/transport/security_connector.c \
+src/core/lib/security/transport/security_connector.cc \
 src/core/lib/security/transport/security_connector.h \
-src/core/lib/security/transport/security_handshaker.c \
+src/core/lib/security/transport/security_handshaker.cc \
 src/core/lib/security/transport/security_handshaker.h \
-src/core/lib/security/transport/server_auth_filter.c \
-src/core/lib/security/transport/tsi_error.c \
+src/core/lib/security/transport/server_auth_filter.cc \
+src/core/lib/security/transport/tsi_error.cc \
 src/core/lib/security/transport/tsi_error.h \
-src/core/lib/security/util/json_util.c \
+src/core/lib/security/util/json_util.cc \
 src/core/lib/security/util/json_util.h \
-src/core/lib/slice/b64.c \
+src/core/lib/slice/b64.cc \
 src/core/lib/slice/b64.h \
-src/core/lib/slice/percent_encoding.c \
+src/core/lib/slice/percent_encoding.cc \
 src/core/lib/slice/percent_encoding.h \
-src/core/lib/slice/slice.c \
-src/core/lib/slice/slice_buffer.c \
-src/core/lib/slice/slice_hash_table.c \
+src/core/lib/slice/slice.cc \
+src/core/lib/slice/slice_buffer.cc \
+src/core/lib/slice/slice_hash_table.cc \
 src/core/lib/slice/slice_hash_table.h \
-src/core/lib/slice/slice_intern.c \
+src/core/lib/slice/slice_intern.cc \
 src/core/lib/slice/slice_internal.h \
-src/core/lib/slice/slice_string_helpers.c \
+src/core/lib/slice/slice_string_helpers.cc \
 src/core/lib/slice/slice_string_helpers.h \
-src/core/lib/support/alloc.c \
-src/core/lib/support/arena.c \
+src/core/lib/support/alloc.cc \
+src/core/lib/support/arena.cc \
 src/core/lib/support/arena.h \
-src/core/lib/support/atm.c \
+src/core/lib/support/atm.cc \
 src/core/lib/support/atomic.h \
 src/core/lib/support/atomic_with_atm.h \
 src/core/lib/support/atomic_with_std.h \
-src/core/lib/support/avl.c \
-src/core/lib/support/backoff.c \
+src/core/lib/support/avl.cc \
+src/core/lib/support/backoff.cc \
 src/core/lib/support/backoff.h \
 src/core/lib/support/block_annotate.h \
-src/core/lib/support/cmdline.c \
-src/core/lib/support/cpu_iphone.c \
-src/core/lib/support/cpu_linux.c \
-src/core/lib/support/cpu_posix.c \
-src/core/lib/support/cpu_windows.c \
+src/core/lib/support/cmdline.cc \
+src/core/lib/support/cpu_iphone.cc \
+src/core/lib/support/cpu_linux.cc \
+src/core/lib/support/cpu_posix.cc \
+src/core/lib/support/cpu_windows.cc \
 src/core/lib/support/env.h \
-src/core/lib/support/env_linux.c \
-src/core/lib/support/env_posix.c \
-src/core/lib/support/env_windows.c \
-src/core/lib/support/histogram.c \
-src/core/lib/support/host_port.c \
-src/core/lib/support/log.c \
-src/core/lib/support/log_android.c \
-src/core/lib/support/log_linux.c \
-src/core/lib/support/log_posix.c \
-src/core/lib/support/log_windows.c \
+src/core/lib/support/env_linux.cc \
+src/core/lib/support/env_posix.cc \
+src/core/lib/support/env_windows.cc \
+src/core/lib/support/histogram.cc \
+src/core/lib/support/host_port.cc \
+src/core/lib/support/log.cc \
+src/core/lib/support/log_android.cc \
+src/core/lib/support/log_linux.cc \
+src/core/lib/support/log_posix.cc \
+src/core/lib/support/log_windows.cc \
 src/core/lib/support/memory.h \
-src/core/lib/support/mpscq.c \
+src/core/lib/support/mpscq.cc \
 src/core/lib/support/mpscq.h \
-src/core/lib/support/murmur_hash.c \
+src/core/lib/support/murmur_hash.cc \
 src/core/lib/support/murmur_hash.h \
 src/core/lib/support/spinlock.h \
-src/core/lib/support/stack_lockfree.c \
+src/core/lib/support/stack_lockfree.cc \
 src/core/lib/support/stack_lockfree.h \
-src/core/lib/support/string.c \
+src/core/lib/support/string.cc \
 src/core/lib/support/string.h \
-src/core/lib/support/string_posix.c \
-src/core/lib/support/string_util_windows.c \
-src/core/lib/support/string_windows.c \
+src/core/lib/support/string_posix.cc \
+src/core/lib/support/string_util_windows.cc \
+src/core/lib/support/string_windows.cc \
 src/core/lib/support/string_windows.h \
-src/core/lib/support/subprocess_posix.c \
-src/core/lib/support/subprocess_windows.c \
-src/core/lib/support/sync.c \
-src/core/lib/support/sync_posix.c \
-src/core/lib/support/sync_windows.c \
-src/core/lib/support/thd.c \
-src/core/lib/support/thd_posix.c \
-src/core/lib/support/thd_windows.c \
-src/core/lib/support/time.c \
-src/core/lib/support/time_posix.c \
-src/core/lib/support/time_precise.c \
+src/core/lib/support/subprocess_posix.cc \
+src/core/lib/support/subprocess_windows.cc \
+src/core/lib/support/sync.cc \
+src/core/lib/support/sync_posix.cc \
+src/core/lib/support/sync_windows.cc \
+src/core/lib/support/thd.cc \
+src/core/lib/support/thd_posix.cc \
+src/core/lib/support/thd_windows.cc \
+src/core/lib/support/time.cc \
+src/core/lib/support/time_posix.cc \
+src/core/lib/support/time_precise.cc \
 src/core/lib/support/time_precise.h \
-src/core/lib/support/time_windows.c \
-src/core/lib/support/tls_pthread.c \
+src/core/lib/support/time_windows.cc \
+src/core/lib/support/tls_pthread.cc \
 src/core/lib/support/tmpfile.h \
-src/core/lib/support/tmpfile_msys.c \
-src/core/lib/support/tmpfile_posix.c \
-src/core/lib/support/tmpfile_windows.c \
-src/core/lib/support/wrap_memcpy.c \
+src/core/lib/support/tmpfile_msys.cc \
+src/core/lib/support/tmpfile_posix.cc \
+src/core/lib/support/tmpfile_windows.cc \
+src/core/lib/support/wrap_memcpy.cc \
 src/core/lib/surface/README.md \
-src/core/lib/surface/alarm.c \
+src/core/lib/surface/alarm.cc \
 src/core/lib/surface/alarm_internal.h \
-src/core/lib/surface/api_trace.c \
+src/core/lib/surface/api_trace.cc \
 src/core/lib/surface/api_trace.h \
-src/core/lib/surface/byte_buffer.c \
-src/core/lib/surface/byte_buffer_reader.c \
-src/core/lib/surface/call.c \
+src/core/lib/surface/byte_buffer.cc \
+src/core/lib/surface/byte_buffer_reader.cc \
+src/core/lib/surface/call.cc \
 src/core/lib/surface/call.h \
-src/core/lib/surface/call_details.c \
-src/core/lib/surface/call_log_batch.c \
+src/core/lib/surface/call_details.cc \
+src/core/lib/surface/call_log_batch.cc \
 src/core/lib/surface/call_test_only.h \
-src/core/lib/surface/channel.c \
+src/core/lib/surface/channel.cc \
 src/core/lib/surface/channel.h \
-src/core/lib/surface/channel_init.c \
+src/core/lib/surface/channel_init.cc \
 src/core/lib/surface/channel_init.h \
-src/core/lib/surface/channel_ping.c \
-src/core/lib/surface/channel_stack_type.c \
+src/core/lib/surface/channel_ping.cc \
+src/core/lib/surface/channel_stack_type.cc \
 src/core/lib/surface/channel_stack_type.h \
-src/core/lib/surface/completion_queue.c \
+src/core/lib/surface/completion_queue.cc \
 src/core/lib/surface/completion_queue.h \
-src/core/lib/surface/completion_queue_factory.c \
+src/core/lib/surface/completion_queue_factory.cc \
 src/core/lib/surface/completion_queue_factory.h \
-src/core/lib/surface/event_string.c \
+src/core/lib/surface/event_string.cc \
 src/core/lib/surface/event_string.h \
-src/core/lib/surface/init.c \
+src/core/lib/surface/init.cc \
 src/core/lib/surface/init.h \
-src/core/lib/surface/init_secure.c \
+src/core/lib/surface/init_secure.cc \
 src/core/lib/surface/lame_client.cc \
 src/core/lib/surface/lame_client.h \
-src/core/lib/surface/metadata_array.c \
-src/core/lib/surface/server.c \
+src/core/lib/surface/metadata_array.cc \
+src/core/lib/surface/server.cc \
 src/core/lib/surface/server.h \
-src/core/lib/surface/validate_metadata.c \
+src/core/lib/surface/validate_metadata.cc \
 src/core/lib/surface/validate_metadata.h \
-src/core/lib/surface/version.c \
+src/core/lib/surface/version.cc \
 src/core/lib/transport/README.md \
-src/core/lib/transport/bdp_estimator.c \
+src/core/lib/transport/bdp_estimator.cc \
 src/core/lib/transport/bdp_estimator.h \
-src/core/lib/transport/byte_stream.c \
+src/core/lib/transport/byte_stream.cc \
 src/core/lib/transport/byte_stream.h \
-src/core/lib/transport/connectivity_state.c \
+src/core/lib/transport/connectivity_state.cc \
 src/core/lib/transport/connectivity_state.h \
-src/core/lib/transport/error_utils.c \
+src/core/lib/transport/error_utils.cc \
 src/core/lib/transport/error_utils.h \
 src/core/lib/transport/http2_errors.h \
-src/core/lib/transport/metadata.c \
+src/core/lib/transport/metadata.cc \
 src/core/lib/transport/metadata.h \
-src/core/lib/transport/metadata_batch.c \
+src/core/lib/transport/metadata_batch.cc \
 src/core/lib/transport/metadata_batch.h \
-src/core/lib/transport/pid_controller.c \
+src/core/lib/transport/pid_controller.cc \
 src/core/lib/transport/pid_controller.h \
-src/core/lib/transport/service_config.c \
+src/core/lib/transport/service_config.cc \
 src/core/lib/transport/service_config.h \
-src/core/lib/transport/static_metadata.c \
+src/core/lib/transport/static_metadata.cc \
 src/core/lib/transport/static_metadata.h \
-src/core/lib/transport/status_conversion.c \
+src/core/lib/transport/status_conversion.cc \
 src/core/lib/transport/status_conversion.h \
-src/core/lib/transport/timeout_encoding.c \
+src/core/lib/transport/timeout_encoding.cc \
 src/core/lib/transport/timeout_encoding.h \
-src/core/lib/transport/transport.c \
+src/core/lib/transport/transport.cc \
 src/core/lib/transport/transport.h \
 src/core/lib/transport/transport_impl.h \
-src/core/lib/transport/transport_op_string.c \
-src/core/plugin_registry/grpc_plugin_registry.c \
+src/core/lib/transport/transport_op_string.cc \
+src/core/plugin_registry/grpc_plugin_registry.cc \
 src/core/tsi/README.md \
-src/core/tsi/fake_transport_security.c \
+src/core/tsi/fake_transport_security.cc \
 src/core/tsi/fake_transport_security.h \
-src/core/tsi/gts_transport_security.c \
+src/core/tsi/gts_transport_security.cc \
 src/core/tsi/gts_transport_security.h \
-src/core/tsi/ssl_transport_security.c \
+src/core/tsi/ssl_transport_security.cc \
 src/core/tsi/ssl_transport_security.h \
 src/core/tsi/ssl_types.h \
-src/core/tsi/transport_security.c \
+src/core/tsi/transport_security.cc \
 src/core/tsi/transport_security.h \
-src/core/tsi/transport_security_adapter.c \
+src/core/tsi/transport_security_adapter.cc \
 src/core/tsi/transport_security_adapter.h \
-src/core/tsi/transport_security_grpc.c \
+src/core/tsi/transport_security_grpc.cc \
 src/core/tsi/transport_security_grpc.h \
 src/core/tsi/transport_security_interface.h \
 third_party/nanopb/pb.h \
diff --git a/tools/internal_ci/helper_scripts/prepare_build_macos_rc b/tools/internal_ci/helper_scripts/prepare_build_macos_rc
index bec529f..dd98a12 100644
--- a/tools/internal_ci/helper_scripts/prepare_build_macos_rc
+++ b/tools/internal_ci/helper_scripts/prepare_build_macos_rc
@@ -27,6 +27,14 @@
 # show current limits
 ulimit -a
 
+# synchronize the clock
+date
+sudo systemsetup -setusingnetworktime off
+sudo systemsetup -setnetworktimeserver "$( ipconfig getoption en0 server_identifier )"
+sudo systemsetup -settimezone America/Los_Angeles
+sudo systemsetup -setusingnetworktime on
+date
+
 # Add GCP credentials for BQ access
 pip install google-api-python-client --user python
 export GOOGLE_APPLICATION_CREDENTIALS=${KOKORO_GFILE_DIR}/GrpcTesting-d0eeee2db331.json
@@ -51,7 +59,6 @@
 pod repo update  # needed by python
 
 # python
-brew install coreutils  # we need grealpath
 pip install virtualenv --user python
 pip install -U six tox setuptools twisted pyyaml --user python
 export PYTHONPATH=/Library/Python/3.4/site-packages
@@ -59,4 +66,7 @@
 # set xcode version for Obj-C tests
 sudo xcode-select -switch /Applications/Xcode_8.2.1.app/Contents/Developer
 
+# TODO(jtattermusch): better debugging of clock skew, remove once not needed
+date
+
 git submodule update --init
diff --git a/tools/internal_ci/linux/grpc_coverage.cfg b/tools/internal_ci/linux/grpc_coverage.cfg
new file mode 100644
index 0000000..56b7745
--- /dev/null
+++ b/tools/internal_ci/linux/grpc_coverage.cfg
@@ -0,0 +1,24 @@
+# Copyright 2017 gRPC authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Config file for the internal CI (in protobuf text format)
+
+# Location of the continuous shell script in repository.
+build_file: "grpc/tools/internal_ci/linux/grpc_coverage.sh"
+timeout_mins: 420
+action {
+  define_artifacts {
+    regex: "github/grpc/reports/**"
+  }
+}
diff --git a/tools/internal_ci/linux/grpc_coverage.sh b/tools/internal_ci/linux/grpc_coverage.sh
new file mode 100755
index 0000000..31623d2
--- /dev/null
+++ b/tools/internal_ci/linux/grpc_coverage.sh
@@ -0,0 +1,30 @@
+#!/usr/bin/env bash
+# Copyright 2017 gRPC authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -ex
+
+# Enter the gRPC repo root
+cd $(dirname $0)/../../..
+
+source tools/internal_ci/helper_scripts/prepare_build_linux_rc
+
+python tools/run_tests/run_tests.py \
+  --use_docker				        \
+  -t                                \
+  -l all                            \
+  -c gcov                           \
+  -x report.xml                     \
+  -j 16
+  
\ No newline at end of file
diff --git a/tools/internal_ci/linux/grpc_microbenchmark_diff.sh b/tools/internal_ci/linux/grpc_microbenchmark_diff.sh
index 58ffcf3..45add1b 100755
--- a/tools/internal_ci/linux/grpc_microbenchmark_diff.sh
+++ b/tools/internal_ci/linux/grpc_microbenchmark_diff.sh
@@ -25,6 +25,8 @@
 source tools/internal_ci/helper_scripts/prepare_build_linux_perf_rc
 
 tools/run_tests/start_port_server.py
+tools/jenkins/run_c_cpp_test.sh tools/profiling/bloat/bloat_diff.py \
+  -d origin/$ghprbTargetBranch || FAILED="true"
 tools/jenkins/run_c_cpp_test.sh tools/profiling/microbenchmarks/bm_diff/bm_main.py \
   -d origin/$ghprbTargetBranch \
   -b $BENCHMARKS_TO_RUN || FAILED="true"
diff --git a/tools/internal_ci/macos/grpc_build_artifacts.sh b/tools/internal_ci/macos/grpc_build_artifacts.sh
index 09784e3..eb4568c 100755
--- a/tools/internal_ci/macos/grpc_build_artifacts.sh
+++ b/tools/internal_ci/macos/grpc_build_artifacts.sh
@@ -27,8 +27,7 @@
 python3.6 -m pip install cython setuptools wheel
 
 # needed to build ruby artifacts
-wget https://raw.githubusercontent.com/grpc/grpc/master/tools/distrib/build_ruby_environment_macos.sh
-bash build_ruby_environment_macos.sh
+time bash tools/distrib/build_ruby_environment_macos.sh
 
 gem install rubygems-update
 update_rubygems
diff --git a/tools/internal_ci/macos/grpc_run_tests_matrix.sh b/tools/internal_ci/macos/grpc_run_tests_matrix.sh
index 8e7fd54..6e0c2bb 100755
--- a/tools/internal_ci/macos/grpc_run_tests_matrix.sh
+++ b/tools/internal_ci/macos/grpc_run_tests_matrix.sh
@@ -28,6 +28,9 @@
 # Reveal leftover processes that might be left behind by the build
 ps aux | grep -i kbuilder
 
+# TODO(jtattermusch): better debugging of clock skew, remove once not needed
+date
+
 echo 'Exiting gRPC main test script.'
 
 if [ "$FAILED" != "" ]
diff --git a/tools/jenkins/run_full_performance.sh b/tools/jenkins/run_full_performance.sh
index a9661c7..9598fd7 100755
--- a/tools/jenkins/run_full_performance.sh
+++ b/tools/jenkins/run_full_performance.sh
@@ -21,7 +21,7 @@
 
 # run 8core client vs 8core server
 tools/run_tests/run_performance_tests.py \
-    -l c++ csharp node ruby java python go node_express php \
+    -l c++ csharp node ruby java python go node_express php_protobuf_php php_protobuf_c \
     --netperf \
     --category scalable \
     --bq_result_table performance_test.performance_experiment \
diff --git a/tools/profiling/bloat/bloat_diff.py b/tools/profiling/bloat/bloat_diff.py
new file mode 100755
index 0000000..9b40685
--- /dev/null
+++ b/tools/profiling/bloat/bloat_diff.py
@@ -0,0 +1,99 @@
+#!/usr/bin/env python2.7
+#
+# Copyright 2017 gRPC authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import argparse
+import glob
+import multiprocessing
+import os
+import shutil
+import subprocess
+import sys
+
+sys.path.append(
+  os.path.join(
+    os.path.dirname(sys.argv[0]), '..', '..', 'run_tests', 'python_utils'))
+import comment_on_pr
+
+argp = argparse.ArgumentParser(
+    description='Perform diff on microbenchmarks')
+
+argp.add_argument(
+    '-d',
+    '--diff_base',
+    type=str,
+    help='Commit or branch to compare the current one to')
+
+argp.add_argument(
+    '-j',
+    '--jobs',
+    type=int,
+    default=multiprocessing.cpu_count())
+
+args = argp.parse_args()
+
+LIBS = [
+  'libgrpc.so',
+  'libgrpc++.so',
+]
+
+def build(where):
+  subprocess.check_call('make -j%d' % args.jobs,
+                        shell=True, cwd='.')
+  shutil.rmtree('bloat_diff_%s' % where, ignore_errors=True)
+  os.rename('libs', 'bloat_diff_%s' % where)
+
+build('new')
+
+if args.diff_base:
+    old = 'old'
+    where_am_i = subprocess.check_output(
+      ['git', 'rev-parse', '--abbrev-ref', 'HEAD']).strip()
+    subprocess.check_call(['git', 'checkout', args.diff_base])
+    subprocess.check_call(['git', 'submodule', 'update'])
+    try:
+      try:
+        build('old')
+      except subprocess.CalledProcessError, e:
+        subprocess.check_call(['make', 'clean'])
+        build('old')
+    finally:
+      subprocess.check_call(['git', 'checkout', where_am_i])
+      subprocess.check_call(['git', 'submodule', 'update'])
+
+subprocess.check_call('make -j%d' % args.jobs,
+                      shell=True, cwd='third_party/bloaty')
+
+text = ''
+for lib in LIBS:
+  text += '****************************************************************\n\n'
+  text += lib + '\n\n'
+  old_version = glob.glob('bloat_diff_old/opt/%s' % lib)
+  new_version = glob.glob('bloat_diff_new/opt/%s' % lib)
+  assert len(new_version) == 1
+  cmd = 'third_party/bloaty/bloaty -d compileunits,symbols'
+  if old_version:
+    assert len(old_version) == 1
+    text += subprocess.check_output('%s %s -- %s' %
+                                    (cmd, new_version[0], old_version[0]),
+                                    shell=True)
+  else:
+    text += subprocess.check_output('%s %s' %
+                                    (cmd, new_version[0]),
+                                    shell=True)
+  text += '\n\n'
+
+print text
+comment_on_pr.comment_on_pr('```\n%s\n```' % text)
diff --git a/tools/run_tests/generated/sources_and_headers.json b/tools/run_tests/generated/sources_and_headers.json
index c46eb72..95556b2 100644
--- a/tools/run_tests/generated/sources_and_headers.json
+++ b/tools/run_tests/generated/sources_and_headers.json
@@ -6000,7 +6000,7 @@
     "language": "c", 
     "name": "grpc", 
     "src": [
-      "src/core/lib/surface/init.c"
+      "src/core/lib/surface/init.cc"
     ], 
     "third_party": false, 
     "type": "lib"
@@ -6018,7 +6018,7 @@
     "language": "c", 
     "name": "grpc_cronet", 
     "src": [
-      "src/core/lib/surface/init.c"
+      "src/core/lib/surface/init.cc"
     ], 
     "third_party": false, 
     "type": "lib"
@@ -6104,8 +6104,8 @@
     "language": "c", 
     "name": "grpc_unsecure", 
     "src": [
-      "src/core/lib/surface/init.c", 
-      "src/core/lib/surface/init_unsecure.c"
+      "src/core/lib/surface/init.cc", 
+      "src/core/lib/surface/init_unsecure.cc"
     ], 
     "third_party": false, 
     "type": "lib"
@@ -7722,37 +7722,37 @@
     "src": [
       "include/grpc/census.h", 
       "src/core/ext/census/aggregation.h", 
-      "src/core/ext/census/base_resources.c", 
+      "src/core/ext/census/base_resources.cc", 
       "src/core/ext/census/base_resources.h", 
       "src/core/ext/census/census_interface.h", 
       "src/core/ext/census/census_rpc_stats.h", 
-      "src/core/ext/census/context.c", 
+      "src/core/ext/census/context.cc", 
       "src/core/ext/census/gen/census.pb.c", 
       "src/core/ext/census/gen/census.pb.h", 
       "src/core/ext/census/gen/trace_context.pb.c", 
       "src/core/ext/census/gen/trace_context.pb.h", 
-      "src/core/ext/census/grpc_context.c", 
-      "src/core/ext/census/grpc_filter.c", 
+      "src/core/ext/census/grpc_context.cc", 
+      "src/core/ext/census/grpc_filter.cc", 
       "src/core/ext/census/grpc_filter.h", 
-      "src/core/ext/census/grpc_plugin.c", 
-      "src/core/ext/census/initialize.c", 
-      "src/core/ext/census/intrusive_hash_map.c", 
+      "src/core/ext/census/grpc_plugin.cc", 
+      "src/core/ext/census/initialize.cc", 
+      "src/core/ext/census/intrusive_hash_map.cc", 
       "src/core/ext/census/intrusive_hash_map.h", 
       "src/core/ext/census/intrusive_hash_map_internal.h", 
-      "src/core/ext/census/mlog.c", 
+      "src/core/ext/census/mlog.cc", 
       "src/core/ext/census/mlog.h", 
-      "src/core/ext/census/operation.c", 
-      "src/core/ext/census/placeholders.c", 
-      "src/core/ext/census/resource.c", 
+      "src/core/ext/census/operation.cc", 
+      "src/core/ext/census/placeholders.cc", 
+      "src/core/ext/census/resource.cc", 
       "src/core/ext/census/resource.h", 
       "src/core/ext/census/rpc_metric_id.h", 
-      "src/core/ext/census/trace_context.c", 
+      "src/core/ext/census/trace_context.cc", 
       "src/core/ext/census/trace_context.h", 
       "src/core/ext/census/trace_label.h", 
       "src/core/ext/census/trace_propagation.h", 
       "src/core/ext/census/trace_status.h", 
       "src/core/ext/census/trace_string.h", 
-      "src/core/ext/census/tracing.c", 
+      "src/core/ext/census/tracing.cc", 
       "src/core/ext/census/tracing.h"
     ], 
     "third_party": false, 
@@ -7767,52 +7767,52 @@
     "language": "c", 
     "name": "gpr_base", 
     "src": [
-      "src/core/lib/profiling/basic_timers.c", 
-      "src/core/lib/profiling/stap_timers.c", 
-      "src/core/lib/support/alloc.c", 
-      "src/core/lib/support/arena.c", 
-      "src/core/lib/support/atm.c", 
-      "src/core/lib/support/avl.c", 
-      "src/core/lib/support/backoff.c", 
-      "src/core/lib/support/cmdline.c", 
-      "src/core/lib/support/cpu_iphone.c", 
-      "src/core/lib/support/cpu_linux.c", 
-      "src/core/lib/support/cpu_posix.c", 
-      "src/core/lib/support/cpu_windows.c", 
-      "src/core/lib/support/env_linux.c", 
-      "src/core/lib/support/env_posix.c", 
-      "src/core/lib/support/env_windows.c", 
-      "src/core/lib/support/histogram.c", 
-      "src/core/lib/support/host_port.c", 
-      "src/core/lib/support/log.c", 
-      "src/core/lib/support/log_android.c", 
-      "src/core/lib/support/log_linux.c", 
-      "src/core/lib/support/log_posix.c", 
-      "src/core/lib/support/log_windows.c", 
-      "src/core/lib/support/mpscq.c", 
-      "src/core/lib/support/murmur_hash.c", 
-      "src/core/lib/support/stack_lockfree.c", 
-      "src/core/lib/support/string.c", 
-      "src/core/lib/support/string_posix.c", 
-      "src/core/lib/support/string_util_windows.c", 
-      "src/core/lib/support/string_windows.c", 
-      "src/core/lib/support/subprocess_posix.c", 
-      "src/core/lib/support/subprocess_windows.c", 
-      "src/core/lib/support/sync.c", 
-      "src/core/lib/support/sync_posix.c", 
-      "src/core/lib/support/sync_windows.c", 
-      "src/core/lib/support/thd.c", 
-      "src/core/lib/support/thd_posix.c", 
-      "src/core/lib/support/thd_windows.c", 
-      "src/core/lib/support/time.c", 
-      "src/core/lib/support/time_posix.c", 
-      "src/core/lib/support/time_precise.c", 
-      "src/core/lib/support/time_windows.c", 
-      "src/core/lib/support/tls_pthread.c", 
-      "src/core/lib/support/tmpfile_msys.c", 
-      "src/core/lib/support/tmpfile_posix.c", 
-      "src/core/lib/support/tmpfile_windows.c", 
-      "src/core/lib/support/wrap_memcpy.c"
+      "src/core/lib/profiling/basic_timers.cc", 
+      "src/core/lib/profiling/stap_timers.cc", 
+      "src/core/lib/support/alloc.cc", 
+      "src/core/lib/support/arena.cc", 
+      "src/core/lib/support/atm.cc", 
+      "src/core/lib/support/avl.cc", 
+      "src/core/lib/support/backoff.cc", 
+      "src/core/lib/support/cmdline.cc", 
+      "src/core/lib/support/cpu_iphone.cc", 
+      "src/core/lib/support/cpu_linux.cc", 
+      "src/core/lib/support/cpu_posix.cc", 
+      "src/core/lib/support/cpu_windows.cc", 
+      "src/core/lib/support/env_linux.cc", 
+      "src/core/lib/support/env_posix.cc", 
+      "src/core/lib/support/env_windows.cc", 
+      "src/core/lib/support/histogram.cc", 
+      "src/core/lib/support/host_port.cc", 
+      "src/core/lib/support/log.cc", 
+      "src/core/lib/support/log_android.cc", 
+      "src/core/lib/support/log_linux.cc", 
+      "src/core/lib/support/log_posix.cc", 
+      "src/core/lib/support/log_windows.cc", 
+      "src/core/lib/support/mpscq.cc", 
+      "src/core/lib/support/murmur_hash.cc", 
+      "src/core/lib/support/stack_lockfree.cc", 
+      "src/core/lib/support/string.cc", 
+      "src/core/lib/support/string_posix.cc", 
+      "src/core/lib/support/string_util_windows.cc", 
+      "src/core/lib/support/string_windows.cc", 
+      "src/core/lib/support/subprocess_posix.cc", 
+      "src/core/lib/support/subprocess_windows.cc", 
+      "src/core/lib/support/sync.cc", 
+      "src/core/lib/support/sync_posix.cc", 
+      "src/core/lib/support/sync_windows.cc", 
+      "src/core/lib/support/thd.cc", 
+      "src/core/lib/support/thd_posix.cc", 
+      "src/core/lib/support/thd_windows.cc", 
+      "src/core/lib/support/time.cc", 
+      "src/core/lib/support/time_posix.cc", 
+      "src/core/lib/support/time_precise.cc", 
+      "src/core/lib/support/time_windows.cc", 
+      "src/core/lib/support/tls_pthread.cc", 
+      "src/core/lib/support/tmpfile_msys.cc", 
+      "src/core/lib/support/tmpfile_posix.cc", 
+      "src/core/lib/support/tmpfile_windows.cc", 
+      "src/core/lib/support/wrap_memcpy.cc"
     ], 
     "third_party": false, 
     "type": "filegroup"
@@ -7997,137 +7997,137 @@
     "language": "c", 
     "name": "grpc_base", 
     "src": [
-      "src/core/lib/channel/channel_args.c", 
-      "src/core/lib/channel/channel_stack.c", 
-      "src/core/lib/channel/channel_stack_builder.c", 
-      "src/core/lib/channel/connected_channel.c", 
-      "src/core/lib/channel/handshaker.c", 
-      "src/core/lib/channel/handshaker_factory.c", 
-      "src/core/lib/channel/handshaker_registry.c", 
-      "src/core/lib/compression/compression.c", 
-      "src/core/lib/compression/message_compress.c", 
-      "src/core/lib/compression/stream_compression.c", 
-      "src/core/lib/compression/stream_compression_gzip.c", 
-      "src/core/lib/compression/stream_compression_identity.c", 
-      "src/core/lib/debug/stats.c", 
-      "src/core/lib/debug/stats_data.c", 
-      "src/core/lib/http/format_request.c", 
-      "src/core/lib/http/httpcli.c", 
-      "src/core/lib/http/parser.c", 
-      "src/core/lib/iomgr/call_combiner.c", 
-      "src/core/lib/iomgr/closure.c", 
-      "src/core/lib/iomgr/combiner.c", 
-      "src/core/lib/iomgr/endpoint.c", 
-      "src/core/lib/iomgr/endpoint_pair_posix.c", 
-      "src/core/lib/iomgr/endpoint_pair_uv.c", 
-      "src/core/lib/iomgr/endpoint_pair_windows.c", 
-      "src/core/lib/iomgr/error.c", 
-      "src/core/lib/iomgr/ev_epoll1_linux.c", 
-      "src/core/lib/iomgr/ev_epollex_linux.c", 
-      "src/core/lib/iomgr/ev_epollsig_linux.c", 
-      "src/core/lib/iomgr/ev_poll_posix.c", 
-      "src/core/lib/iomgr/ev_posix.c", 
-      "src/core/lib/iomgr/ev_windows.c", 
-      "src/core/lib/iomgr/exec_ctx.c", 
-      "src/core/lib/iomgr/executor.c", 
-      "src/core/lib/iomgr/gethostname_fallback.c", 
-      "src/core/lib/iomgr/gethostname_host_name_max.c", 
-      "src/core/lib/iomgr/gethostname_sysconf.c", 
-      "src/core/lib/iomgr/iocp_windows.c", 
-      "src/core/lib/iomgr/iomgr.c", 
-      "src/core/lib/iomgr/iomgr_posix.c", 
-      "src/core/lib/iomgr/iomgr_uv.c", 
-      "src/core/lib/iomgr/iomgr_windows.c", 
-      "src/core/lib/iomgr/is_epollexclusive_available.c", 
-      "src/core/lib/iomgr/load_file.c", 
-      "src/core/lib/iomgr/lockfree_event.c", 
-      "src/core/lib/iomgr/network_status_tracker.c", 
-      "src/core/lib/iomgr/polling_entity.c", 
-      "src/core/lib/iomgr/pollset_set_uv.c", 
-      "src/core/lib/iomgr/pollset_set_windows.c", 
-      "src/core/lib/iomgr/pollset_uv.c", 
-      "src/core/lib/iomgr/pollset_windows.c", 
-      "src/core/lib/iomgr/resolve_address_posix.c", 
-      "src/core/lib/iomgr/resolve_address_uv.c", 
-      "src/core/lib/iomgr/resolve_address_windows.c", 
-      "src/core/lib/iomgr/resource_quota.c", 
-      "src/core/lib/iomgr/sockaddr_utils.c", 
-      "src/core/lib/iomgr/socket_factory_posix.c", 
-      "src/core/lib/iomgr/socket_mutator.c", 
-      "src/core/lib/iomgr/socket_utils_common_posix.c", 
-      "src/core/lib/iomgr/socket_utils_linux.c", 
-      "src/core/lib/iomgr/socket_utils_posix.c", 
-      "src/core/lib/iomgr/socket_utils_uv.c", 
-      "src/core/lib/iomgr/socket_utils_windows.c", 
-      "src/core/lib/iomgr/socket_windows.c", 
-      "src/core/lib/iomgr/tcp_client_posix.c", 
-      "src/core/lib/iomgr/tcp_client_uv.c", 
-      "src/core/lib/iomgr/tcp_client_windows.c", 
-      "src/core/lib/iomgr/tcp_posix.c", 
-      "src/core/lib/iomgr/tcp_server_posix.c", 
-      "src/core/lib/iomgr/tcp_server_utils_posix_common.c", 
-      "src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c", 
-      "src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c", 
-      "src/core/lib/iomgr/tcp_server_uv.c", 
-      "src/core/lib/iomgr/tcp_server_windows.c", 
-      "src/core/lib/iomgr/tcp_uv.c", 
-      "src/core/lib/iomgr/tcp_windows.c", 
-      "src/core/lib/iomgr/time_averaged_stats.c", 
-      "src/core/lib/iomgr/timer_generic.c", 
-      "src/core/lib/iomgr/timer_heap.c", 
-      "src/core/lib/iomgr/timer_manager.c", 
-      "src/core/lib/iomgr/timer_uv.c", 
-      "src/core/lib/iomgr/udp_server.c", 
-      "src/core/lib/iomgr/unix_sockets_posix.c", 
-      "src/core/lib/iomgr/unix_sockets_posix_noop.c", 
-      "src/core/lib/iomgr/wakeup_fd_cv.c", 
-      "src/core/lib/iomgr/wakeup_fd_eventfd.c", 
-      "src/core/lib/iomgr/wakeup_fd_nospecial.c", 
-      "src/core/lib/iomgr/wakeup_fd_pipe.c", 
-      "src/core/lib/iomgr/wakeup_fd_posix.c", 
-      "src/core/lib/json/json.c", 
-      "src/core/lib/json/json_reader.c", 
-      "src/core/lib/json/json_string.c", 
-      "src/core/lib/json/json_writer.c", 
-      "src/core/lib/slice/b64.c", 
-      "src/core/lib/slice/percent_encoding.c", 
-      "src/core/lib/slice/slice.c", 
-      "src/core/lib/slice/slice_buffer.c", 
-      "src/core/lib/slice/slice_hash_table.c", 
-      "src/core/lib/slice/slice_intern.c", 
-      "src/core/lib/slice/slice_string_helpers.c", 
-      "src/core/lib/surface/alarm.c", 
-      "src/core/lib/surface/api_trace.c", 
-      "src/core/lib/surface/byte_buffer.c", 
-      "src/core/lib/surface/byte_buffer_reader.c", 
-      "src/core/lib/surface/call.c", 
-      "src/core/lib/surface/call_details.c", 
-      "src/core/lib/surface/call_log_batch.c", 
-      "src/core/lib/surface/channel.c", 
-      "src/core/lib/surface/channel_init.c", 
-      "src/core/lib/surface/channel_ping.c", 
-      "src/core/lib/surface/channel_stack_type.c", 
-      "src/core/lib/surface/completion_queue.c", 
-      "src/core/lib/surface/completion_queue_factory.c", 
-      "src/core/lib/surface/event_string.c", 
+      "src/core/lib/channel/channel_args.cc", 
+      "src/core/lib/channel/channel_stack.cc", 
+      "src/core/lib/channel/channel_stack_builder.cc", 
+      "src/core/lib/channel/connected_channel.cc", 
+      "src/core/lib/channel/handshaker.cc", 
+      "src/core/lib/channel/handshaker_factory.cc", 
+      "src/core/lib/channel/handshaker_registry.cc", 
+      "src/core/lib/compression/compression.cc", 
+      "src/core/lib/compression/message_compress.cc", 
+      "src/core/lib/compression/stream_compression.cc", 
+      "src/core/lib/compression/stream_compression_gzip.cc", 
+      "src/core/lib/compression/stream_compression_identity.cc", 
+      "src/core/lib/debug/stats.cc", 
+      "src/core/lib/debug/stats_data.cc", 
+      "src/core/lib/http/format_request.cc", 
+      "src/core/lib/http/httpcli.cc", 
+      "src/core/lib/http/parser.cc", 
+      "src/core/lib/iomgr/call_combiner.cc", 
+      "src/core/lib/iomgr/closure.cc", 
+      "src/core/lib/iomgr/combiner.cc", 
+      "src/core/lib/iomgr/endpoint.cc", 
+      "src/core/lib/iomgr/endpoint_pair_posix.cc", 
+      "src/core/lib/iomgr/endpoint_pair_uv.cc", 
+      "src/core/lib/iomgr/endpoint_pair_windows.cc", 
+      "src/core/lib/iomgr/error.cc", 
+      "src/core/lib/iomgr/ev_epoll1_linux.cc", 
+      "src/core/lib/iomgr/ev_epollex_linux.cc", 
+      "src/core/lib/iomgr/ev_epollsig_linux.cc", 
+      "src/core/lib/iomgr/ev_poll_posix.cc", 
+      "src/core/lib/iomgr/ev_posix.cc", 
+      "src/core/lib/iomgr/ev_windows.cc", 
+      "src/core/lib/iomgr/exec_ctx.cc", 
+      "src/core/lib/iomgr/executor.cc", 
+      "src/core/lib/iomgr/gethostname_fallback.cc", 
+      "src/core/lib/iomgr/gethostname_host_name_max.cc", 
+      "src/core/lib/iomgr/gethostname_sysconf.cc", 
+      "src/core/lib/iomgr/iocp_windows.cc", 
+      "src/core/lib/iomgr/iomgr.cc", 
+      "src/core/lib/iomgr/iomgr_posix.cc", 
+      "src/core/lib/iomgr/iomgr_uv.cc", 
+      "src/core/lib/iomgr/iomgr_windows.cc", 
+      "src/core/lib/iomgr/is_epollexclusive_available.cc", 
+      "src/core/lib/iomgr/load_file.cc", 
+      "src/core/lib/iomgr/lockfree_event.cc", 
+      "src/core/lib/iomgr/network_status_tracker.cc", 
+      "src/core/lib/iomgr/polling_entity.cc", 
+      "src/core/lib/iomgr/pollset_set_uv.cc", 
+      "src/core/lib/iomgr/pollset_set_windows.cc", 
+      "src/core/lib/iomgr/pollset_uv.cc", 
+      "src/core/lib/iomgr/pollset_windows.cc", 
+      "src/core/lib/iomgr/resolve_address_posix.cc", 
+      "src/core/lib/iomgr/resolve_address_uv.cc", 
+      "src/core/lib/iomgr/resolve_address_windows.cc", 
+      "src/core/lib/iomgr/resource_quota.cc", 
+      "src/core/lib/iomgr/sockaddr_utils.cc", 
+      "src/core/lib/iomgr/socket_factory_posix.cc", 
+      "src/core/lib/iomgr/socket_mutator.cc", 
+      "src/core/lib/iomgr/socket_utils_common_posix.cc", 
+      "src/core/lib/iomgr/socket_utils_linux.cc", 
+      "src/core/lib/iomgr/socket_utils_posix.cc", 
+      "src/core/lib/iomgr/socket_utils_uv.cc", 
+      "src/core/lib/iomgr/socket_utils_windows.cc", 
+      "src/core/lib/iomgr/socket_windows.cc", 
+      "src/core/lib/iomgr/tcp_client_posix.cc", 
+      "src/core/lib/iomgr/tcp_client_uv.cc", 
+      "src/core/lib/iomgr/tcp_client_windows.cc", 
+      "src/core/lib/iomgr/tcp_posix.cc", 
+      "src/core/lib/iomgr/tcp_server_posix.cc", 
+      "src/core/lib/iomgr/tcp_server_utils_posix_common.cc", 
+      "src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc", 
+      "src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc", 
+      "src/core/lib/iomgr/tcp_server_uv.cc", 
+      "src/core/lib/iomgr/tcp_server_windows.cc", 
+      "src/core/lib/iomgr/tcp_uv.cc", 
+      "src/core/lib/iomgr/tcp_windows.cc", 
+      "src/core/lib/iomgr/time_averaged_stats.cc", 
+      "src/core/lib/iomgr/timer_generic.cc", 
+      "src/core/lib/iomgr/timer_heap.cc", 
+      "src/core/lib/iomgr/timer_manager.cc", 
+      "src/core/lib/iomgr/timer_uv.cc", 
+      "src/core/lib/iomgr/udp_server.cc", 
+      "src/core/lib/iomgr/unix_sockets_posix.cc", 
+      "src/core/lib/iomgr/unix_sockets_posix_noop.cc", 
+      "src/core/lib/iomgr/wakeup_fd_cv.cc", 
+      "src/core/lib/iomgr/wakeup_fd_eventfd.cc", 
+      "src/core/lib/iomgr/wakeup_fd_nospecial.cc", 
+      "src/core/lib/iomgr/wakeup_fd_pipe.cc", 
+      "src/core/lib/iomgr/wakeup_fd_posix.cc", 
+      "src/core/lib/json/json.cc", 
+      "src/core/lib/json/json_reader.cc", 
+      "src/core/lib/json/json_string.cc", 
+      "src/core/lib/json/json_writer.cc", 
+      "src/core/lib/slice/b64.cc", 
+      "src/core/lib/slice/percent_encoding.cc", 
+      "src/core/lib/slice/slice.cc", 
+      "src/core/lib/slice/slice_buffer.cc", 
+      "src/core/lib/slice/slice_hash_table.cc", 
+      "src/core/lib/slice/slice_intern.cc", 
+      "src/core/lib/slice/slice_string_helpers.cc", 
+      "src/core/lib/surface/alarm.cc", 
+      "src/core/lib/surface/api_trace.cc", 
+      "src/core/lib/surface/byte_buffer.cc", 
+      "src/core/lib/surface/byte_buffer_reader.cc", 
+      "src/core/lib/surface/call.cc", 
+      "src/core/lib/surface/call_details.cc", 
+      "src/core/lib/surface/call_log_batch.cc", 
+      "src/core/lib/surface/channel.cc", 
+      "src/core/lib/surface/channel_init.cc", 
+      "src/core/lib/surface/channel_ping.cc", 
+      "src/core/lib/surface/channel_stack_type.cc", 
+      "src/core/lib/surface/completion_queue.cc", 
+      "src/core/lib/surface/completion_queue_factory.cc", 
+      "src/core/lib/surface/event_string.cc", 
       "src/core/lib/surface/lame_client.cc", 
-      "src/core/lib/surface/metadata_array.c", 
-      "src/core/lib/surface/server.c", 
-      "src/core/lib/surface/validate_metadata.c", 
-      "src/core/lib/surface/version.c", 
-      "src/core/lib/transport/bdp_estimator.c", 
-      "src/core/lib/transport/byte_stream.c", 
-      "src/core/lib/transport/connectivity_state.c", 
-      "src/core/lib/transport/error_utils.c", 
-      "src/core/lib/transport/metadata.c", 
-      "src/core/lib/transport/metadata_batch.c", 
-      "src/core/lib/transport/pid_controller.c", 
-      "src/core/lib/transport/service_config.c", 
-      "src/core/lib/transport/static_metadata.c", 
-      "src/core/lib/transport/status_conversion.c", 
-      "src/core/lib/transport/timeout_encoding.c", 
-      "src/core/lib/transport/transport.c", 
-      "src/core/lib/transport/transport_op_string.c"
+      "src/core/lib/surface/metadata_array.cc", 
+      "src/core/lib/surface/server.cc", 
+      "src/core/lib/surface/validate_metadata.cc", 
+      "src/core/lib/surface/version.cc", 
+      "src/core/lib/transport/bdp_estimator.cc", 
+      "src/core/lib/transport/byte_stream.cc", 
+      "src/core/lib/transport/connectivity_state.cc", 
+      "src/core/lib/transport/error_utils.cc", 
+      "src/core/lib/transport/metadata.cc", 
+      "src/core/lib/transport/metadata_batch.cc", 
+      "src/core/lib/transport/pid_controller.cc", 
+      "src/core/lib/transport/service_config.cc", 
+      "src/core/lib/transport/static_metadata.cc", 
+      "src/core/lib/transport/status_conversion.cc", 
+      "src/core/lib/transport/timeout_encoding.cc", 
+      "src/core/lib/transport/transport.cc", 
+      "src/core/lib/transport/transport_op_string.cc"
     ], 
     "third_party": false, 
     "type": "filegroup"
@@ -8434,43 +8434,43 @@
     "language": "c", 
     "name": "grpc_client_channel", 
     "src": [
-      "src/core/ext/filters/client_channel/channel_connectivity.c", 
-      "src/core/ext/filters/client_channel/client_channel.c", 
+      "src/core/ext/filters/client_channel/channel_connectivity.cc", 
+      "src/core/ext/filters/client_channel/client_channel.cc", 
       "src/core/ext/filters/client_channel/client_channel.h", 
-      "src/core/ext/filters/client_channel/client_channel_factory.c", 
+      "src/core/ext/filters/client_channel/client_channel_factory.cc", 
       "src/core/ext/filters/client_channel/client_channel_factory.h", 
-      "src/core/ext/filters/client_channel/client_channel_plugin.c", 
-      "src/core/ext/filters/client_channel/connector.c", 
+      "src/core/ext/filters/client_channel/client_channel_plugin.cc", 
+      "src/core/ext/filters/client_channel/connector.cc", 
       "src/core/ext/filters/client_channel/connector.h", 
-      "src/core/ext/filters/client_channel/http_connect_handshaker.c", 
+      "src/core/ext/filters/client_channel/http_connect_handshaker.cc", 
       "src/core/ext/filters/client_channel/http_connect_handshaker.h", 
-      "src/core/ext/filters/client_channel/http_proxy.c", 
+      "src/core/ext/filters/client_channel/http_proxy.cc", 
       "src/core/ext/filters/client_channel/http_proxy.h", 
-      "src/core/ext/filters/client_channel/lb_policy.c", 
+      "src/core/ext/filters/client_channel/lb_policy.cc", 
       "src/core/ext/filters/client_channel/lb_policy.h", 
-      "src/core/ext/filters/client_channel/lb_policy_factory.c", 
+      "src/core/ext/filters/client_channel/lb_policy_factory.cc", 
       "src/core/ext/filters/client_channel/lb_policy_factory.h", 
-      "src/core/ext/filters/client_channel/lb_policy_registry.c", 
+      "src/core/ext/filters/client_channel/lb_policy_registry.cc", 
       "src/core/ext/filters/client_channel/lb_policy_registry.h", 
-      "src/core/ext/filters/client_channel/parse_address.c", 
+      "src/core/ext/filters/client_channel/parse_address.cc", 
       "src/core/ext/filters/client_channel/parse_address.h", 
-      "src/core/ext/filters/client_channel/proxy_mapper.c", 
+      "src/core/ext/filters/client_channel/proxy_mapper.cc", 
       "src/core/ext/filters/client_channel/proxy_mapper.h", 
-      "src/core/ext/filters/client_channel/proxy_mapper_registry.c", 
+      "src/core/ext/filters/client_channel/proxy_mapper_registry.cc", 
       "src/core/ext/filters/client_channel/proxy_mapper_registry.h", 
-      "src/core/ext/filters/client_channel/resolver.c", 
+      "src/core/ext/filters/client_channel/resolver.cc", 
       "src/core/ext/filters/client_channel/resolver.h", 
-      "src/core/ext/filters/client_channel/resolver_factory.c", 
+      "src/core/ext/filters/client_channel/resolver_factory.cc", 
       "src/core/ext/filters/client_channel/resolver_factory.h", 
-      "src/core/ext/filters/client_channel/resolver_registry.c", 
+      "src/core/ext/filters/client_channel/resolver_registry.cc", 
       "src/core/ext/filters/client_channel/resolver_registry.h", 
-      "src/core/ext/filters/client_channel/retry_throttle.c", 
+      "src/core/ext/filters/client_channel/retry_throttle.cc", 
       "src/core/ext/filters/client_channel/retry_throttle.h", 
-      "src/core/ext/filters/client_channel/subchannel.c", 
+      "src/core/ext/filters/client_channel/subchannel.cc", 
       "src/core/ext/filters/client_channel/subchannel.h", 
-      "src/core/ext/filters/client_channel/subchannel_index.c", 
+      "src/core/ext/filters/client_channel/subchannel_index.cc", 
       "src/core/ext/filters/client_channel/subchannel_index.h", 
-      "src/core/ext/filters/client_channel/uri_parser.c", 
+      "src/core/ext/filters/client_channel/uri_parser.cc", 
       "src/core/ext/filters/client_channel/uri_parser.h"
     ], 
     "third_party": false, 
@@ -8520,7 +8520,7 @@
     "language": "c", 
     "name": "grpc_deadline_filter", 
     "src": [
-      "src/core/ext/filters/deadline/deadline_filter.c", 
+      "src/core/ext/filters/deadline/deadline_filter.cc", 
       "src/core/ext/filters/deadline/deadline_filter.h"
     ], 
     "third_party": false, 
@@ -8540,12 +8540,12 @@
     "language": "c", 
     "name": "grpc_http_filters", 
     "src": [
-      "src/core/ext/filters/http/client/http_client_filter.c", 
+      "src/core/ext/filters/http/client/http_client_filter.cc", 
       "src/core/ext/filters/http/client/http_client_filter.h", 
-      "src/core/ext/filters/http/http_filters_plugin.c", 
-      "src/core/ext/filters/http/message_compress/message_compress_filter.c", 
+      "src/core/ext/filters/http/http_filters_plugin.cc", 
+      "src/core/ext/filters/http/message_compress/message_compress_filter.cc", 
       "src/core/ext/filters/http/message_compress/message_compress_filter.h", 
-      "src/core/ext/filters/http/server/http_server_filter.c", 
+      "src/core/ext/filters/http/server/http_server_filter.cc", 
       "src/core/ext/filters/http/server/http_server_filter.h"
     ], 
     "third_party": false, 
@@ -8571,15 +8571,15 @@
     "language": "c", 
     "name": "grpc_lb_policy_grpclb", 
     "src": [
-      "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c", 
+      "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc", 
       "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h", 
-      "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c", 
+      "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc", 
       "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h", 
-      "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.c", 
+      "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.cc", 
       "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h", 
-      "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c", 
+      "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc", 
       "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h", 
-      "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c", 
+      "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc", 
       "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h", 
       "src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c", 
       "src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h"
@@ -8608,15 +8608,15 @@
     "language": "c", 
     "name": "grpc_lb_policy_grpclb_secure", 
     "src": [
-      "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c", 
+      "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc", 
       "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h", 
-      "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c", 
+      "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc", 
       "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h", 
       "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h", 
-      "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c", 
-      "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c", 
+      "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc", 
+      "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc", 
       "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h", 
-      "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c", 
+      "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc", 
       "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h", 
       "src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c", 
       "src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h"
@@ -8635,7 +8635,7 @@
     "language": "c", 
     "name": "grpc_lb_policy_pick_first", 
     "src": [
-      "src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c"
+      "src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc"
     ], 
     "third_party": false, 
     "type": "filegroup"
@@ -8651,7 +8651,7 @@
     "language": "c", 
     "name": "grpc_lb_policy_round_robin", 
     "src": [
-      "src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c"
+      "src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc"
     ], 
     "third_party": false, 
     "type": "filegroup"
@@ -8668,7 +8668,7 @@
     "language": "c", 
     "name": "grpc_max_age_filter", 
     "src": [
-      "src/core/ext/filters/max_age/max_age_filter.c", 
+      "src/core/ext/filters/max_age/max_age_filter.cc", 
       "src/core/ext/filters/max_age/max_age_filter.h"
     ], 
     "third_party": false, 
@@ -8686,7 +8686,7 @@
     "language": "c", 
     "name": "grpc_message_size_filter", 
     "src": [
-      "src/core/ext/filters/message_size/message_size_filter.c", 
+      "src/core/ext/filters/message_size/message_size_filter.cc", 
       "src/core/ext/filters/message_size/message_size_filter.h"
     ], 
     "third_party": false, 
@@ -8706,12 +8706,12 @@
     "language": "c", 
     "name": "grpc_resolver_dns_ares", 
     "src": [
-      "src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c", 
+      "src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc", 
       "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h", 
-      "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c", 
-      "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c", 
+      "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc", 
+      "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc", 
       "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h", 
-      "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c"
+      "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc"
     ], 
     "third_party": false, 
     "type": "filegroup"
@@ -8727,7 +8727,7 @@
     "language": "c", 
     "name": "grpc_resolver_dns_native", 
     "src": [
-      "src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c"
+      "src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc"
     ], 
     "third_party": false, 
     "type": "filegroup"
@@ -8745,7 +8745,7 @@
     "language": "c", 
     "name": "grpc_resolver_fake", 
     "src": [
-      "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c", 
+      "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc", 
       "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h"
     ], 
     "third_party": false, 
@@ -8762,7 +8762,7 @@
     "language": "c", 
     "name": "grpc_resolver_sockaddr", 
     "src": [
-      "src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c"
+      "src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc"
     ], 
     "third_party": false, 
     "type": "filegroup"
@@ -8801,49 +8801,49 @@
     "name": "grpc_secure", 
     "src": [
       "include/grpc/grpc_security.h", 
-      "src/core/lib/http/httpcli_security_connector.c", 
-      "src/core/lib/security/context/security_context.c", 
+      "src/core/lib/http/httpcli_security_connector.cc", 
+      "src/core/lib/security/context/security_context.cc", 
       "src/core/lib/security/context/security_context.h", 
-      "src/core/lib/security/credentials/composite/composite_credentials.c", 
+      "src/core/lib/security/credentials/composite/composite_credentials.cc", 
       "src/core/lib/security/credentials/composite/composite_credentials.h", 
-      "src/core/lib/security/credentials/credentials.c", 
+      "src/core/lib/security/credentials/credentials.cc", 
       "src/core/lib/security/credentials/credentials.h", 
-      "src/core/lib/security/credentials/credentials_metadata.c", 
-      "src/core/lib/security/credentials/fake/fake_credentials.c", 
+      "src/core/lib/security/credentials/credentials_metadata.cc", 
+      "src/core/lib/security/credentials/fake/fake_credentials.cc", 
       "src/core/lib/security/credentials/fake/fake_credentials.h", 
-      "src/core/lib/security/credentials/google_default/credentials_generic.c", 
-      "src/core/lib/security/credentials/google_default/google_default_credentials.c", 
+      "src/core/lib/security/credentials/google_default/credentials_generic.cc", 
+      "src/core/lib/security/credentials/google_default/google_default_credentials.cc", 
       "src/core/lib/security/credentials/google_default/google_default_credentials.h", 
-      "src/core/lib/security/credentials/iam/iam_credentials.c", 
+      "src/core/lib/security/credentials/iam/iam_credentials.cc", 
       "src/core/lib/security/credentials/iam/iam_credentials.h", 
-      "src/core/lib/security/credentials/jwt/json_token.c", 
+      "src/core/lib/security/credentials/jwt/json_token.cc", 
       "src/core/lib/security/credentials/jwt/json_token.h", 
-      "src/core/lib/security/credentials/jwt/jwt_credentials.c", 
+      "src/core/lib/security/credentials/jwt/jwt_credentials.cc", 
       "src/core/lib/security/credentials/jwt/jwt_credentials.h", 
-      "src/core/lib/security/credentials/jwt/jwt_verifier.c", 
+      "src/core/lib/security/credentials/jwt/jwt_verifier.cc", 
       "src/core/lib/security/credentials/jwt/jwt_verifier.h", 
-      "src/core/lib/security/credentials/oauth2/oauth2_credentials.c", 
+      "src/core/lib/security/credentials/oauth2/oauth2_credentials.cc", 
       "src/core/lib/security/credentials/oauth2/oauth2_credentials.h", 
-      "src/core/lib/security/credentials/plugin/plugin_credentials.c", 
+      "src/core/lib/security/credentials/plugin/plugin_credentials.cc", 
       "src/core/lib/security/credentials/plugin/plugin_credentials.h", 
-      "src/core/lib/security/credentials/ssl/ssl_credentials.c", 
+      "src/core/lib/security/credentials/ssl/ssl_credentials.cc", 
       "src/core/lib/security/credentials/ssl/ssl_credentials.h", 
       "src/core/lib/security/transport/auth_filters.h", 
-      "src/core/lib/security/transport/client_auth_filter.c", 
-      "src/core/lib/security/transport/lb_targets_info.c", 
+      "src/core/lib/security/transport/client_auth_filter.cc", 
+      "src/core/lib/security/transport/lb_targets_info.cc", 
       "src/core/lib/security/transport/lb_targets_info.h", 
-      "src/core/lib/security/transport/secure_endpoint.c", 
+      "src/core/lib/security/transport/secure_endpoint.cc", 
       "src/core/lib/security/transport/secure_endpoint.h", 
-      "src/core/lib/security/transport/security_connector.c", 
+      "src/core/lib/security/transport/security_connector.cc", 
       "src/core/lib/security/transport/security_connector.h", 
-      "src/core/lib/security/transport/security_handshaker.c", 
+      "src/core/lib/security/transport/security_handshaker.cc", 
       "src/core/lib/security/transport/security_handshaker.h", 
-      "src/core/lib/security/transport/server_auth_filter.c", 
-      "src/core/lib/security/transport/tsi_error.c", 
+      "src/core/lib/security/transport/server_auth_filter.cc", 
+      "src/core/lib/security/transport/tsi_error.cc", 
       "src/core/lib/security/transport/tsi_error.h", 
-      "src/core/lib/security/util/json_util.c", 
+      "src/core/lib/security/util/json_util.cc", 
       "src/core/lib/security/util/json_util.h", 
-      "src/core/lib/surface/init_secure.c"
+      "src/core/lib/surface/init_secure.cc"
     ], 
     "third_party": false, 
     "type": "filegroup"
@@ -8860,7 +8860,7 @@
     "language": "c", 
     "name": "grpc_server_backward_compatibility", 
     "src": [
-      "src/core/ext/filters/workarounds/workaround_utils.c", 
+      "src/core/ext/filters/workarounds/workaround_utils.cc", 
       "src/core/ext/filters/workarounds/workaround_utils.h"
     ], 
     "third_party": false, 
@@ -8879,9 +8879,9 @@
     "language": "c", 
     "name": "grpc_server_load_reporting", 
     "src": [
-      "src/core/ext/filters/load_reporting/server_load_reporting_filter.c", 
+      "src/core/ext/filters/load_reporting/server_load_reporting_filter.cc", 
       "src/core/ext/filters/load_reporting/server_load_reporting_filter.h", 
-      "src/core/ext/filters/load_reporting/server_load_reporting_plugin.c", 
+      "src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc", 
       "src/core/ext/filters/load_reporting/server_load_reporting_plugin.h"
     ], 
     "third_party": false, 
@@ -8916,7 +8916,7 @@
     "language": "c", 
     "name": "grpc_test_util_base", 
     "src": [
-      "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c", 
+      "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc", 
       "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h", 
       "test/core/end2end/cq_verifier.c", 
       "test/core/end2end/cq_verifier.h", 
@@ -8953,6 +8953,7 @@
   {
     "deps": [
       "gpr", 
+      "grpc_base_headers", 
       "grpc_trace_headers"
     ], 
     "headers": [], 
@@ -8960,7 +8961,7 @@
     "language": "c", 
     "name": "grpc_trace", 
     "src": [
-      "src/core/lib/debug/trace.c"
+      "src/core/lib/debug/trace.cc"
     ], 
     "third_party": false, 
     "type": "filegroup"
@@ -9013,47 +9014,47 @@
     "language": "c", 
     "name": "grpc_transport_chttp2", 
     "src": [
-      "src/core/ext/transport/chttp2/transport/bin_decoder.c", 
+      "src/core/ext/transport/chttp2/transport/bin_decoder.cc", 
       "src/core/ext/transport/chttp2/transport/bin_decoder.h", 
-      "src/core/ext/transport/chttp2/transport/bin_encoder.c", 
+      "src/core/ext/transport/chttp2/transport/bin_encoder.cc", 
       "src/core/ext/transport/chttp2/transport/bin_encoder.h", 
-      "src/core/ext/transport/chttp2/transport/chttp2_plugin.c", 
-      "src/core/ext/transport/chttp2/transport/chttp2_transport.c", 
+      "src/core/ext/transport/chttp2/transport/chttp2_plugin.cc", 
+      "src/core/ext/transport/chttp2/transport/chttp2_transport.cc", 
       "src/core/ext/transport/chttp2/transport/chttp2_transport.h", 
-      "src/core/ext/transport/chttp2/transport/flow_control.c", 
+      "src/core/ext/transport/chttp2/transport/flow_control.cc", 
       "src/core/ext/transport/chttp2/transport/frame.h", 
-      "src/core/ext/transport/chttp2/transport/frame_data.c", 
+      "src/core/ext/transport/chttp2/transport/frame_data.cc", 
       "src/core/ext/transport/chttp2/transport/frame_data.h", 
-      "src/core/ext/transport/chttp2/transport/frame_goaway.c", 
+      "src/core/ext/transport/chttp2/transport/frame_goaway.cc", 
       "src/core/ext/transport/chttp2/transport/frame_goaway.h", 
-      "src/core/ext/transport/chttp2/transport/frame_ping.c", 
+      "src/core/ext/transport/chttp2/transport/frame_ping.cc", 
       "src/core/ext/transport/chttp2/transport/frame_ping.h", 
-      "src/core/ext/transport/chttp2/transport/frame_rst_stream.c", 
+      "src/core/ext/transport/chttp2/transport/frame_rst_stream.cc", 
       "src/core/ext/transport/chttp2/transport/frame_rst_stream.h", 
-      "src/core/ext/transport/chttp2/transport/frame_settings.c", 
+      "src/core/ext/transport/chttp2/transport/frame_settings.cc", 
       "src/core/ext/transport/chttp2/transport/frame_settings.h", 
-      "src/core/ext/transport/chttp2/transport/frame_window_update.c", 
+      "src/core/ext/transport/chttp2/transport/frame_window_update.cc", 
       "src/core/ext/transport/chttp2/transport/frame_window_update.h", 
-      "src/core/ext/transport/chttp2/transport/hpack_encoder.c", 
+      "src/core/ext/transport/chttp2/transport/hpack_encoder.cc", 
       "src/core/ext/transport/chttp2/transport/hpack_encoder.h", 
-      "src/core/ext/transport/chttp2/transport/hpack_parser.c", 
+      "src/core/ext/transport/chttp2/transport/hpack_parser.cc", 
       "src/core/ext/transport/chttp2/transport/hpack_parser.h", 
-      "src/core/ext/transport/chttp2/transport/hpack_table.c", 
+      "src/core/ext/transport/chttp2/transport/hpack_table.cc", 
       "src/core/ext/transport/chttp2/transport/hpack_table.h", 
-      "src/core/ext/transport/chttp2/transport/http2_settings.c", 
+      "src/core/ext/transport/chttp2/transport/http2_settings.cc", 
       "src/core/ext/transport/chttp2/transport/http2_settings.h", 
-      "src/core/ext/transport/chttp2/transport/huffsyms.c", 
+      "src/core/ext/transport/chttp2/transport/huffsyms.cc", 
       "src/core/ext/transport/chttp2/transport/huffsyms.h", 
-      "src/core/ext/transport/chttp2/transport/incoming_metadata.c", 
+      "src/core/ext/transport/chttp2/transport/incoming_metadata.cc", 
       "src/core/ext/transport/chttp2/transport/incoming_metadata.h", 
       "src/core/ext/transport/chttp2/transport/internal.h", 
-      "src/core/ext/transport/chttp2/transport/parsing.c", 
-      "src/core/ext/transport/chttp2/transport/stream_lists.c", 
-      "src/core/ext/transport/chttp2/transport/stream_map.c", 
+      "src/core/ext/transport/chttp2/transport/parsing.cc", 
+      "src/core/ext/transport/chttp2/transport/stream_lists.cc", 
+      "src/core/ext/transport/chttp2/transport/stream_map.cc", 
       "src/core/ext/transport/chttp2/transport/stream_map.h", 
-      "src/core/ext/transport/chttp2/transport/varint.c", 
+      "src/core/ext/transport/chttp2/transport/varint.cc", 
       "src/core/ext/transport/chttp2/transport/varint.h", 
-      "src/core/ext/transport/chttp2/transport/writing.c"
+      "src/core/ext/transport/chttp2/transport/writing.cc"
     ], 
     "third_party": false, 
     "type": "filegroup"
@@ -9069,7 +9070,7 @@
     "language": "c", 
     "name": "grpc_transport_chttp2_alpn", 
     "src": [
-      "src/core/ext/transport/chttp2/alpn/alpn.c", 
+      "src/core/ext/transport/chttp2/alpn/alpn.cc", 
       "src/core/ext/transport/chttp2/alpn/alpn.h"
     ], 
     "third_party": false, 
@@ -9089,7 +9090,7 @@
     "language": "c", 
     "name": "grpc_transport_chttp2_client_connector", 
     "src": [
-      "src/core/ext/transport/chttp2/client/chttp2_connector.c", 
+      "src/core/ext/transport/chttp2/client/chttp2_connector.cc", 
       "src/core/ext/transport/chttp2/client/chttp2_connector.h"
     ], 
     "third_party": false, 
@@ -9108,8 +9109,8 @@
     "language": "c", 
     "name": "grpc_transport_chttp2_client_insecure", 
     "src": [
-      "src/core/ext/transport/chttp2/client/insecure/channel_create.c", 
-      "src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c"
+      "src/core/ext/transport/chttp2/client/insecure/channel_create.cc", 
+      "src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc"
     ], 
     "third_party": false, 
     "type": "filegroup"
@@ -9128,7 +9129,7 @@
     "language": "c", 
     "name": "grpc_transport_chttp2_client_secure", 
     "src": [
-      "src/core/ext/transport/chttp2/client/secure/secure_channel_create.c"
+      "src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc"
     ], 
     "third_party": false, 
     "type": "filegroup"
@@ -9146,7 +9147,7 @@
     "language": "c", 
     "name": "grpc_transport_chttp2_server", 
     "src": [
-      "src/core/ext/transport/chttp2/server/chttp2_server.c", 
+      "src/core/ext/transport/chttp2/server/chttp2_server.cc", 
       "src/core/ext/transport/chttp2/server/chttp2_server.h"
     ], 
     "third_party": false, 
@@ -9164,8 +9165,8 @@
     "language": "c", 
     "name": "grpc_transport_chttp2_server_insecure", 
     "src": [
-      "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c", 
-      "src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c"
+      "src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc", 
+      "src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc"
     ], 
     "third_party": false, 
     "type": "filegroup"
@@ -9183,7 +9184,7 @@
     "language": "c", 
     "name": "grpc_transport_chttp2_server_secure", 
     "src": [
-      "src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c"
+      "src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc"
     ], 
     "third_party": false, 
     "type": "filegroup"
@@ -9208,9 +9209,9 @@
       "include/grpc/grpc_cronet.h", 
       "include/grpc/grpc_security.h", 
       "include/grpc/grpc_security_constants.h", 
-      "src/core/ext/transport/cronet/client/secure/cronet_channel_create.c", 
-      "src/core/ext/transport/cronet/transport/cronet_api_dummy.c", 
-      "src/core/ext/transport/cronet/transport/cronet_transport.c", 
+      "src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc", 
+      "src/core/ext/transport/cronet/transport/cronet_api_dummy.cc", 
+      "src/core/ext/transport/cronet/transport/cronet_transport.cc", 
       "src/core/ext/transport/cronet/transport/cronet_transport.h"
     ], 
     "third_party": false, 
@@ -9227,8 +9228,8 @@
     "language": "c", 
     "name": "grpc_transport_inproc", 
     "src": [
-      "src/core/ext/transport/inproc/inproc_plugin.c", 
-      "src/core/ext/transport/inproc/inproc_transport.c"
+      "src/core/ext/transport/inproc/inproc_plugin.cc", 
+      "src/core/ext/transport/inproc/inproc_transport.cc"
     ], 
     "third_party": false, 
     "type": "filegroup"
@@ -9263,7 +9264,7 @@
     "language": "c", 
     "name": "grpc_workaround_cronet_compression_filter", 
     "src": [
-      "src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c", 
+      "src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc", 
       "src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h"
     ], 
     "third_party": false, 
@@ -9331,14 +9332,14 @@
     "language": "c", 
     "name": "tsi", 
     "src": [
-      "src/core/tsi/fake_transport_security.c", 
+      "src/core/tsi/fake_transport_security.cc", 
       "src/core/tsi/fake_transport_security.h", 
-      "src/core/tsi/gts_transport_security.c", 
+      "src/core/tsi/gts_transport_security.cc", 
       "src/core/tsi/gts_transport_security.h", 
-      "src/core/tsi/ssl_transport_security.c", 
+      "src/core/tsi/ssl_transport_security.cc", 
       "src/core/tsi/ssl_transport_security.h", 
       "src/core/tsi/ssl_types.h", 
-      "src/core/tsi/transport_security_grpc.c", 
+      "src/core/tsi/transport_security_grpc.cc", 
       "src/core/tsi/transport_security_grpc.h"
     ], 
     "third_party": false, 
@@ -9358,9 +9359,9 @@
     "language": "c", 
     "name": "tsi_interface", 
     "src": [
-      "src/core/tsi/transport_security.c", 
+      "src/core/tsi/transport_security.cc", 
       "src/core/tsi/transport_security.h", 
-      "src/core/tsi/transport_security_adapter.c", 
+      "src/core/tsi/transport_security_adapter.cc", 
       "src/core/tsi/transport_security_adapter.h", 
       "src/core/tsi/transport_security_interface.h"
     ], 
diff --git a/tools/run_tests/generated/tests.json b/tools/run_tests/generated/tests.json
index 72dfbc0..1fefb52 100644
--- a/tools/run_tests/generated/tests.json
+++ b/tools/run_tests/generated/tests.json
@@ -49542,7 +49542,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_unary_1channel_100rpcs_1MB", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -49567,7 +49567,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_from_client_1channel_1MB", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -49592,7 +49592,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_ping_pong_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -49617,7 +49617,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -49642,7 +49642,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_1mps_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -49667,7 +49667,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_10mps_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -49692,7 +49692,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_1channel_1MBmsg_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -49717,7 +49717,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_64KBmsg_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -49742,7 +49742,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_2waysharedcq_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -49767,7 +49767,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_2waysharedcq_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -49792,7 +49792,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_unary_qps_unconstrained_2waysharedcq_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -49817,7 +49817,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_one_server_core_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -49844,7 +49844,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_client_sync_server_unary_qps_unconstrained_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -49869,7 +49869,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_client_unary_1channel_64wide_128Breq_8MBresp_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -49896,7 +49896,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_client_sync_server_streaming_qps_unconstrained_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -49921,7 +49921,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_unary_ping_pong_secure_1MB", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -49946,7 +49946,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_unary_ping_pong_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -49971,7 +49971,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_unary_qps_unconstrained_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -49996,7 +49996,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_unary_ping_pong_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50021,7 +50021,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_unary_qps_unconstrained_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50046,7 +50046,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_ping_pong_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50071,7 +50071,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_qps_unconstrained_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50096,7 +50096,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_qps_unconstrained_1mps_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50121,7 +50121,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_qps_unconstrained_10mps_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50146,7 +50146,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_ping_pong_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50171,7 +50171,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50196,7 +50196,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_1mps_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50221,7 +50221,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_10mps_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50246,7 +50246,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_from_client_ping_pong_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50271,7 +50271,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_from_client_qps_unconstrained_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50296,7 +50296,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_from_client_ping_pong_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50321,7 +50321,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_from_client_qps_unconstrained_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50346,7 +50346,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_from_server_ping_pong_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50371,7 +50371,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_from_server_qps_unconstrained_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50396,7 +50396,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_from_server_ping_pong_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50421,7 +50421,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_from_server_qps_unconstrained_secure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50446,7 +50446,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_ping_pong_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50471,7 +50471,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50496,7 +50496,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_1mps_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50521,7 +50521,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_10mps_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50546,7 +50546,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_1channel_1MBmsg_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50571,7 +50571,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_64KBmsg_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50596,7 +50596,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_2waysharedcq_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50621,7 +50621,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_2waysharedcq_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50646,7 +50646,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_unary_qps_unconstrained_2waysharedcq_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50671,7 +50671,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_one_server_core_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50698,7 +50698,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_client_sync_server_unary_qps_unconstrained_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50723,7 +50723,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_client_unary_1channel_64wide_128Breq_8MBresp_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50750,7 +50750,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_client_sync_server_streaming_qps_unconstrained_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50775,7 +50775,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_unary_ping_pong_insecure_1MB", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50800,7 +50800,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_unary_ping_pong_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50825,7 +50825,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_unary_qps_unconstrained_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50850,7 +50850,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_unary_ping_pong_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50875,7 +50875,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_unary_qps_unconstrained_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50900,7 +50900,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_ping_pong_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50925,7 +50925,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_qps_unconstrained_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50950,7 +50950,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_qps_unconstrained_1mps_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -50975,7 +50975,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_qps_unconstrained_10mps_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51000,7 +51000,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_ping_pong_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51025,7 +51025,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51050,7 +51050,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_1mps_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51075,7 +51075,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_10mps_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51100,7 +51100,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_from_client_ping_pong_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51125,7 +51125,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_from_client_qps_unconstrained_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51150,7 +51150,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_from_client_ping_pong_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51175,7 +51175,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_from_client_qps_unconstrained_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51200,7 +51200,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_from_server_ping_pong_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51225,7 +51225,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_from_server_qps_unconstrained_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51250,7 +51250,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_from_server_ping_pong_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51275,7 +51275,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_from_server_qps_unconstrained_insecure", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51313,7 +51313,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_unary_1channel_100rpcs_1MB_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51351,7 +51351,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_from_client_1channel_1MB_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51389,7 +51389,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_ping_pong_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51427,7 +51427,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51465,7 +51465,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_1mps_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51503,7 +51503,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_10mps_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51541,7 +51541,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_1channel_1MBmsg_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51579,7 +51579,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_64KBmsg_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51617,7 +51617,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_2waysharedcq_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51655,7 +51655,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_2waysharedcq_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51693,7 +51693,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_unary_qps_unconstrained_2waysharedcq_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51731,7 +51731,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_one_server_core_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51771,7 +51771,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_client_sync_server_unary_qps_unconstrained_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51809,7 +51809,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_client_unary_1channel_64wide_128Breq_8MBresp_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51849,7 +51849,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_client_sync_server_streaming_qps_unconstrained_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51887,7 +51887,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_unary_ping_pong_secure_1MB_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51925,7 +51925,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_unary_ping_pong_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -51963,7 +51963,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_unary_qps_unconstrained_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52001,7 +52001,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_unary_ping_pong_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52039,7 +52039,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_unary_qps_unconstrained_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52077,7 +52077,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_ping_pong_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52115,7 +52115,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_qps_unconstrained_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52153,7 +52153,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_qps_unconstrained_1mps_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52191,7 +52191,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_qps_unconstrained_10mps_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52229,7 +52229,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_ping_pong_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52267,7 +52267,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52305,7 +52305,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_1mps_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52343,7 +52343,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_10mps_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52381,7 +52381,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_from_client_ping_pong_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52419,7 +52419,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_from_client_qps_unconstrained_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52457,7 +52457,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_from_client_ping_pong_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52495,7 +52495,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_from_client_qps_unconstrained_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52533,7 +52533,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_from_server_ping_pong_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52571,7 +52571,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_from_server_qps_unconstrained_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52609,7 +52609,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_from_server_ping_pong_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52647,7 +52647,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_from_server_qps_unconstrained_secure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52685,7 +52685,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_ping_pong_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52723,7 +52723,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52761,7 +52761,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_1mps_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52799,7 +52799,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_10mps_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52837,7 +52837,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_1channel_1MBmsg_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52875,7 +52875,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_64KBmsg_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52913,7 +52913,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_2waysharedcq_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52951,7 +52951,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_2waysharedcq_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -52989,7 +52989,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_unary_qps_unconstrained_2waysharedcq_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53027,7 +53027,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_one_server_core_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53067,7 +53067,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_client_sync_server_unary_qps_unconstrained_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53105,7 +53105,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_client_unary_1channel_64wide_128Breq_8MBresp_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53145,7 +53145,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_client_sync_server_streaming_qps_unconstrained_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53183,7 +53183,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_unary_ping_pong_insecure_1MB_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53221,7 +53221,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_unary_ping_pong_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53259,7 +53259,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_unary_qps_unconstrained_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53297,7 +53297,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_unary_ping_pong_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53335,7 +53335,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_unary_qps_unconstrained_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53373,7 +53373,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_ping_pong_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53411,7 +53411,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_qps_unconstrained_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53449,7 +53449,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_qps_unconstrained_1mps_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53487,7 +53487,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_qps_unconstrained_10mps_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53525,7 +53525,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_ping_pong_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53563,7 +53563,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53601,7 +53601,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_1mps_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53639,7 +53639,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_10mps_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53677,7 +53677,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_from_client_ping_pong_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53715,7 +53715,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_from_client_qps_unconstrained_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53753,7 +53753,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_from_client_ping_pong_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53791,7 +53791,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_from_client_qps_unconstrained_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53829,7 +53829,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_from_server_ping_pong_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53867,7 +53867,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_sync_streaming_from_server_qps_unconstrained_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53905,7 +53905,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_from_server_ping_pong_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
@@ -53943,7 +53943,7 @@
       "linux"
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_from_server_qps_unconstrained_insecure_low_thread_count", 
-    "timeout_seconds": 360
+    "timeout_seconds": 120
   }, 
   {
     "args": [
diff --git a/tools/run_tests/performance/run_worker_php.sh b/tools/run_tests/performance/run_worker_php.sh
index 5d0c4fa..e524d52 100755
--- a/tools/run_tests/performance/run_worker_php.sh
+++ b/tools/run_tests/performance/run_worker_php.sh
@@ -16,13 +16,18 @@
 source ~/.rvm/scripts/rvm
 set -ex
 
-repo=$(dirname $0)/../../..
-
+cd $(dirname $0)/../../..
+repo=$(pwd)
 # First set up all dependences needed for PHP QPS test
 cd $repo
 cd src/php/tests/qps
 composer install
+# Install protobuf C-extension for php
+cd vendor/google/protobuf/php/ext/google/protobuf
+phpize
+./configure
+make
 # The proxy worker for PHP is implemented in Ruby
-cd ../../../..
+cd $repo
 ruby src/ruby/qps/proxy-worker.rb $@
 
diff --git a/tools/run_tests/performance/scenario_config.py b/tools/run_tests/performance/scenario_config.py
index 5efc9f5..5019358 100644
--- a/tools/run_tests/performance/scenario_config.py
+++ b/tools/run_tests/performance/scenario_config.py
@@ -802,25 +802,32 @@
 
 class PhpLanguage:
 
-  def __init__(self):
+  def __init__(self, use_protobuf_c_extension=False):
     pass
+    self.use_protobuf_c_extension=use_protobuf_c_extension
     self.safename = str(self)
 
   def worker_cmdline(self):
+    if self.use_protobuf_c_extension:
+        return ['tools/run_tests/performance/run_worker_php.sh -c']
     return ['tools/run_tests/performance/run_worker_php.sh']
 
   def worker_port_offset(self):
     return 800
 
   def scenarios(self):
+    php_extension_mode='php_protobuf_php_extension'
+    if self.use_protobuf_c_extension:
+        php_extension_mode='php_protobuf_c_extension'
+    
     yield _ping_pong_scenario(
-        'php_to_cpp_protobuf_sync_unary_ping_pong', rpc_type='UNARY',
-        client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+        '%s_to_cpp_protobuf_sync_unary_ping_pong' % php_extension_mode, 
+        rpc_type='UNARY', client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
         server_language='c++', async_server_threads=1)
 
     yield _ping_pong_scenario(
-        'php_to_cpp_protobuf_sync_streaming_ping_pong', rpc_type='STREAMING',
-        client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+        '%s_to_cpp_protobuf_sync_streaming_ping_pong' % php_extension_mode, 
+        rpc_type='STREAMING', client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
         server_language='c++', async_server_threads=1)
 
   def __str__(self):
@@ -1024,7 +1031,8 @@
     'node' : NodeLanguage(),
     'node_express': NodeExpressLanguage(),
     'ruby' : RubyLanguage(),
-    'php' : PhpLanguage(),
+    'php_protobuf_php' : PhpLanguage(),
+    'php_protobuf_c' : PhpLanguage(use_protobuf_c_extension=True),
     'java' : JavaLanguage(),
     'python' : PythonLanguage(),
     'go' : GoLanguage(),
diff --git a/tools/run_tests/python_utils/jobset.py b/tools/run_tests/python_utils/jobset.py
index 062c79a..82a3bc1 100755
--- a/tools/run_tests/python_utils/jobset.py
+++ b/tools/run_tests/python_utils/jobset.py
@@ -364,7 +364,7 @@
 class Jobset(object):
   """Manages one run of jobs."""
 
-  def __init__(self, check_cancelled, maxjobs, newline_on_success, travis,
+  def __init__(self, check_cancelled, maxjobs, maxjobs_cpu_agnostic, newline_on_success, travis,
                stop_on_failure, add_env, quiet_success, max_time):
     self._running = set()
     self._check_cancelled = check_cancelled
@@ -372,6 +372,7 @@
     self._failures = 0
     self._completed = 0
     self._maxjobs = maxjobs
+    self._maxjobs_cpu_agnostic = maxjobs_cpu_agnostic
     self._newline_on_success = newline_on_success
     self._travis = travis
     self._stop_on_failure = stop_on_failure
@@ -406,7 +407,9 @@
       if self.cancelled(): return False
       current_cpu_cost = self.cpu_cost()
       if current_cpu_cost == 0: break
-      if current_cpu_cost + spec.cpu_cost <= self._maxjobs: break
+      if current_cpu_cost + spec.cpu_cost <= self._maxjobs:
+        if len(self._running) < self._maxjobs_cpu_agnostic:
+          break
       self.reap()
     if self.cancelled(): return False
     job = Job(spec,
@@ -491,6 +494,7 @@
 def run(cmdlines,
         check_cancelled=_never_cancelled,
         maxjobs=None,
+        maxjobs_cpu_agnostic=None,
         newline_on_success=False,
         travis=False,
         infinite_runs=False,
@@ -509,6 +513,7 @@
     return 0, resultset
   js = Jobset(check_cancelled,
               maxjobs if maxjobs is not None else _DEFAULT_MAX_JOBS,
+              maxjobs_cpu_agnostic if maxjobs_cpu_agnostic is not None else _DEFAULT_MAX_JOBS,
               newline_on_success, travis, stop_on_failure, add_env,
               quiet_success, max_time)
   for cmdline, remaining in tag_remaining(cmdlines):
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index 6e2115c..1c41679 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -117,6 +117,13 @@
                        e.cmd, e.returncode, e.output)
     raise
 
+def max_parallel_tests_for_current_platform():
+  # Too much test parallelization has only been seen to be a problem
+  # so far on windows.
+  if jobset.platform_string() == 'windows':
+    return 64
+  return 128
+
 # SimpleConfig: just compile with CONFIG=config, and run the binary to test
 class Config(object):
 
@@ -701,7 +708,7 @@
     return [config.build for config in self.pythons]
 
   def post_tests_steps(self):
-    if self.config != 'gcov':
+    if self.config.build_config != 'gcov':
       return []
     else:
       return [['tools/run_tests/helper_scripts/post_tests_python.sh']]
@@ -1618,7 +1625,7 @@
       jobset.message('START', 'Running tests quietly, only failing tests will be reported', do_newline=True)
     num_test_failures, resultset = jobset.run(
         all_runs, check_cancelled, newline_on_success=newline_on_success,
-        travis=args.travis, maxjobs=args.jobs,
+        travis=args.travis, maxjobs=args.jobs, maxjobs_cpu_agnostic=max_parallel_tests_for_current_platform(),
         stop_on_failure=args.stop_on_failure,
         quiet_success=args.quiet_success, max_time=args.max_time)
     if resultset:
@@ -1641,7 +1648,7 @@
                                            suite_name=args.report_suite_name)
 
   number_failures, _ = jobset.run(
-      post_tests_steps, maxjobs=1, stop_on_failure=True,
+      post_tests_steps, maxjobs=1, stop_on_failure=False,
       newline_on_success=newline_on_success, travis=args.travis)
 
   out = []
diff --git a/tools/run_tests/sanity/check_submodules.sh b/tools/run_tests/sanity/check_submodules.sh
index 7c934b1..97324f0 100755
--- a/tools/run_tests/sanity/check_submodules.sh
+++ b/tools/run_tests/sanity/check_submodules.sh
@@ -34,6 +34,7 @@
  80a37e0782d2d702d52234b62dd4b9ec74fd2c95 third_party/protobuf (v3.4.0)
  cacf7f1d4e3d44d871b605da3b647f07d718623f third_party/zlib (v1.2.11)
  3be1924221e1326df520f8498d704a5c4c8d0cce third_party/cares/cares (cares-1_13_0)
+ 73594cde8c9a52a102c4341c244c833aa61b9c06 third_party/bloaty
 EOF
 
 diff -u $submodules $want_submodules
diff --git a/tools/ubsan_suppressions.txt b/tools/ubsan_suppressions.txt
index 6ccc306..2268adc 100644
--- a/tools/ubsan_suppressions.txt
+++ b/tools/ubsan_suppressions.txt
@@ -9,3 +9,9 @@
 nonnull-attribute:google::protobuf::*
 alignment:google::protobuf::*
 nonnull-attribute:_tr_stored_block
+# The following 5 suppressors should be removed as part of C++ cleanup
+enum:client_fuzzer_one_entry
+enum:message_compress_test
+enum:transport_security_test
+enum:algorithm_test
+alignment:transport_security_test