Merge commit '14db637' from origin/upstream/master

Change-Id: Icd396e16b58fe3c43e69184daace8e4b700ac57a
diff --git a/BUILD.gn b/BUILD.gn
new file mode 100644
index 0000000..e416913
--- /dev/null
+++ b/BUILD.gn
@@ -0,0 +1,660 @@
+# Copyright 2016 The Fuchsia Authors. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#    * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#    * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#    * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# asio is, in our configuration, a header-only library. The defines
+# here are necessary to teach asio to not look for the rest of boost,
+# to not want to be installed anywhere, and to not use exceptions or
+# rtti.
+
+config("asio_config") {
+  include_dirs = [ "asio/include" ]
+
+  defines = [
+    "ASIO_STANDALONE",  # Don't look for the rest of boost
+    "ASIO_NO_EXCEPTIONS",
+    "ASIO_NO_TYPEID",
+    "ASIO_HAS_STD_SYSTEM_ERROR",  # Force the use of C++11 std::error_code
+  ]
+}
+
+source_set("asio") {
+  sources = [
+    "asio/include/asio.hpp",
+    "asio/include/asio/associated_allocator.hpp",
+    "asio/include/asio/associated_executor.hpp",
+    "asio/include/asio/async_result.hpp",
+    "asio/include/asio/basic_datagram_socket.hpp",
+    "asio/include/asio/basic_deadline_timer.hpp",
+    "asio/include/asio/basic_io_object.hpp",
+    "asio/include/asio/basic_raw_socket.hpp",
+    "asio/include/asio/basic_seq_packet_socket.hpp",
+    "asio/include/asio/basic_serial_port.hpp",
+    "asio/include/asio/basic_signal_set.hpp",
+    "asio/include/asio/basic_socket.hpp",
+    "asio/include/asio/basic_socket_acceptor.hpp",
+    "asio/include/asio/basic_socket_iostream.hpp",
+    "asio/include/asio/basic_socket_streambuf.hpp",
+    "asio/include/asio/basic_stream_socket.hpp",
+    "asio/include/asio/basic_streambuf.hpp",
+    "asio/include/asio/basic_streambuf_fwd.hpp",
+    "asio/include/asio/basic_waitable_timer.hpp",
+    "asio/include/asio/bind_executor.hpp",
+    "asio/include/asio/buffer.hpp",
+    "asio/include/asio/buffered_read_stream.hpp",
+    "asio/include/asio/buffered_read_stream_fwd.hpp",
+    "asio/include/asio/buffered_stream.hpp",
+    "asio/include/asio/buffered_stream_fwd.hpp",
+    "asio/include/asio/buffered_write_stream.hpp",
+    "asio/include/asio/buffered_write_stream_fwd.hpp",
+    "asio/include/asio/buffers_iterator.hpp",
+    "asio/include/asio/completion_condition.hpp",
+    "asio/include/asio/connect.hpp",
+    "asio/include/asio/coroutine.hpp",
+    "asio/include/asio/datagram_socket_service.hpp",
+    "asio/include/asio/deadline_timer.hpp",
+    "asio/include/asio/deadline_timer_service.hpp",
+    "asio/include/asio/defer.hpp",
+    "asio/include/asio/detail/array.hpp",
+    "asio/include/asio/detail/array_fwd.hpp",
+    "asio/include/asio/detail/assert.hpp",
+    "asio/include/asio/detail/atomic_count.hpp",
+    "asio/include/asio/detail/base_from_completion_cond.hpp",
+    "asio/include/asio/detail/bind_handler.hpp",
+    "asio/include/asio/detail/buffer_resize_guard.hpp",
+    "asio/include/asio/detail/buffer_sequence_adapter.hpp",
+    "asio/include/asio/detail/buffered_stream_storage.hpp",
+    "asio/include/asio/detail/call_stack.hpp",
+    "asio/include/asio/detail/chrono.hpp",
+    "asio/include/asio/detail/chrono_time_traits.hpp",
+    "asio/include/asio/detail/completion_handler.hpp",
+    "asio/include/asio/detail/concurrency_hint.hpp",
+    "asio/include/asio/detail/conditionally_enabled_event.hpp",
+    "asio/include/asio/detail/conditionally_enabled_mutex.hpp",
+    "asio/include/asio/detail/config.hpp",
+    "asio/include/asio/detail/consuming_buffers.hpp",
+    "asio/include/asio/detail/cstddef.hpp",
+    "asio/include/asio/detail/cstdint.hpp",
+    "asio/include/asio/detail/date_time_fwd.hpp",
+    "asio/include/asio/detail/deadline_timer_service.hpp",
+    "asio/include/asio/detail/dependent_type.hpp",
+    "asio/include/asio/detail/descriptor_ops.hpp",
+    "asio/include/asio/detail/descriptor_read_op.hpp",
+    "asio/include/asio/detail/descriptor_write_op.hpp",
+    "asio/include/asio/detail/dev_poll_reactor.hpp",
+    "asio/include/asio/detail/epoll_reactor.hpp",
+    "asio/include/asio/detail/event.hpp",
+    "asio/include/asio/detail/eventfd_select_interrupter.hpp",
+    "asio/include/asio/detail/executor_op.hpp",
+    "asio/include/asio/detail/fd_set_adapter.hpp",
+    "asio/include/asio/detail/fenced_block.hpp",
+    "asio/include/asio/detail/functional.hpp",
+    "asio/include/asio/detail/gcc_arm_fenced_block.hpp",
+    "asio/include/asio/detail/gcc_hppa_fenced_block.hpp",
+    "asio/include/asio/detail/gcc_sync_fenced_block.hpp",
+    "asio/include/asio/detail/gcc_x86_fenced_block.hpp",
+    "asio/include/asio/detail/global.hpp",
+    "asio/include/asio/detail/handler_alloc_helpers.hpp",
+    "asio/include/asio/detail/handler_cont_helpers.hpp",
+    "asio/include/asio/detail/handler_invoke_helpers.hpp",
+    "asio/include/asio/detail/handler_tracking.hpp",
+    "asio/include/asio/detail/handler_type_requirements.hpp",
+    "asio/include/asio/detail/handler_work.hpp",
+    "asio/include/asio/detail/hash_map.hpp",
+    "asio/include/asio/detail/impl/buffer_sequence_adapter.ipp",
+    "asio/include/asio/detail/impl/descriptor_ops.ipp",
+    "asio/include/asio/detail/impl/dev_poll_reactor.hpp",
+    "asio/include/asio/detail/impl/dev_poll_reactor.ipp",
+    "asio/include/asio/detail/impl/epoll_reactor.hpp",
+    "asio/include/asio/detail/impl/epoll_reactor.ipp",
+    "asio/include/asio/detail/impl/eventfd_select_interrupter.ipp",
+    "asio/include/asio/detail/impl/handler_tracking.ipp",
+    "asio/include/asio/detail/impl/kqueue_reactor.hpp",
+    "asio/include/asio/detail/impl/kqueue_reactor.ipp",
+    "asio/include/asio/detail/impl/null_event.ipp",
+    "asio/include/asio/detail/impl/pipe_select_interrupter.ipp",
+    "asio/include/asio/detail/impl/posix_event.ipp",
+    "asio/include/asio/detail/impl/posix_mutex.ipp",
+    "asio/include/asio/detail/impl/posix_thread.ipp",
+    "asio/include/asio/detail/impl/posix_tss_ptr.ipp",
+    "asio/include/asio/detail/impl/reactive_descriptor_service.ipp",
+    "asio/include/asio/detail/impl/reactive_serial_port_service.ipp",
+    "asio/include/asio/detail/impl/reactive_socket_service_base.ipp",
+    "asio/include/asio/detail/impl/resolver_service_base.ipp",
+    "asio/include/asio/detail/impl/scheduler.ipp",
+    "asio/include/asio/detail/impl/select_reactor.hpp",
+    "asio/include/asio/detail/impl/select_reactor.ipp",
+    "asio/include/asio/detail/impl/service_registry.hpp",
+    "asio/include/asio/detail/impl/service_registry.ipp",
+    "asio/include/asio/detail/impl/signal_set_service.ipp",
+    "asio/include/asio/detail/impl/socket_ops.ipp",
+    "asio/include/asio/detail/impl/socket_select_interrupter.ipp",
+    "asio/include/asio/detail/impl/strand_executor_service.hpp",
+    "asio/include/asio/detail/impl/strand_executor_service.ipp",
+    "asio/include/asio/detail/impl/strand_service.hpp",
+    "asio/include/asio/detail/impl/strand_service.ipp",
+    "asio/include/asio/detail/impl/throw_error.ipp",
+    "asio/include/asio/detail/impl/timer_queue_ptime.ipp",
+    "asio/include/asio/detail/impl/timer_queue_set.ipp",
+    "asio/include/asio/detail/impl/win_event.ipp",
+    "asio/include/asio/detail/impl/win_iocp_handle_service.ipp",
+    "asio/include/asio/detail/impl/win_iocp_io_context.hpp",
+    "asio/include/asio/detail/impl/win_iocp_io_context.ipp",
+    "asio/include/asio/detail/impl/win_iocp_serial_port_service.ipp",
+    "asio/include/asio/detail/impl/win_iocp_socket_service_base.ipp",
+    "asio/include/asio/detail/impl/win_mutex.ipp",
+    "asio/include/asio/detail/impl/win_object_handle_service.ipp",
+    "asio/include/asio/detail/impl/win_static_mutex.ipp",
+    "asio/include/asio/detail/impl/win_thread.ipp",
+    "asio/include/asio/detail/impl/win_tss_ptr.ipp",
+    "asio/include/asio/detail/impl/winrt_ssocket_service_base.ipp",
+    "asio/include/asio/detail/impl/winrt_timer_scheduler.hpp",
+    "asio/include/asio/detail/impl/winrt_timer_scheduler.ipp",
+    "asio/include/asio/detail/impl/winsock_init.ipp",
+    "asio/include/asio/detail/io_control.hpp",
+    "asio/include/asio/detail/is_buffer_sequence.hpp",
+    "asio/include/asio/detail/is_executor.hpp",
+    "asio/include/asio/detail/keyword_tss_ptr.hpp",
+    "asio/include/asio/detail/kqueue_reactor.hpp",
+    "asio/include/asio/detail/limits.hpp",
+    "asio/include/asio/detail/local_free_on_block_exit.hpp",
+    "asio/include/asio/detail/macos_fenced_block.hpp",
+    "asio/include/asio/detail/memory.hpp",
+    "asio/include/asio/detail/mutex.hpp",
+    "asio/include/asio/detail/noncopyable.hpp",
+    "asio/include/asio/detail/null_event.hpp",
+    "asio/include/asio/detail/null_fenced_block.hpp",
+    "asio/include/asio/detail/null_global.hpp",
+    "asio/include/asio/detail/null_mutex.hpp",
+    "asio/include/asio/detail/null_reactor.hpp",
+    "asio/include/asio/detail/null_signal_blocker.hpp",
+    "asio/include/asio/detail/null_socket_service.hpp",
+    "asio/include/asio/detail/null_static_mutex.hpp",
+    "asio/include/asio/detail/null_thread.hpp",
+    "asio/include/asio/detail/null_tss_ptr.hpp",
+    "asio/include/asio/detail/object_pool.hpp",
+    "asio/include/asio/detail/old_win_sdk_compat.hpp",
+    "asio/include/asio/detail/op_queue.hpp",
+    "asio/include/asio/detail/operation.hpp",
+    "asio/include/asio/detail/pipe_select_interrupter.hpp",
+    "asio/include/asio/detail/pop_options.hpp",
+    "asio/include/asio/detail/posix_event.hpp",
+    "asio/include/asio/detail/posix_fd_set_adapter.hpp",
+    "asio/include/asio/detail/posix_global.hpp",
+    "asio/include/asio/detail/posix_mutex.hpp",
+    "asio/include/asio/detail/posix_signal_blocker.hpp",
+    "asio/include/asio/detail/posix_static_mutex.hpp",
+    "asio/include/asio/detail/posix_thread.hpp",
+    "asio/include/asio/detail/posix_tss_ptr.hpp",
+    "asio/include/asio/detail/push_options.hpp",
+    "asio/include/asio/detail/reactive_descriptor_service.hpp",
+    "asio/include/asio/detail/reactive_null_buffers_op.hpp",
+    "asio/include/asio/detail/reactive_serial_port_service.hpp",
+    "asio/include/asio/detail/reactive_socket_accept_op.hpp",
+    "asio/include/asio/detail/reactive_socket_connect_op.hpp",
+    "asio/include/asio/detail/reactive_socket_recv_op.hpp",
+    "asio/include/asio/detail/reactive_socket_recvfrom_op.hpp",
+    "asio/include/asio/detail/reactive_socket_recvmsg_op.hpp",
+    "asio/include/asio/detail/reactive_socket_send_op.hpp",
+    "asio/include/asio/detail/reactive_socket_sendto_op.hpp",
+    "asio/include/asio/detail/reactive_socket_service.hpp",
+    "asio/include/asio/detail/reactive_socket_service_base.hpp",
+    "asio/include/asio/detail/reactive_wait_op.hpp",
+    "asio/include/asio/detail/reactor.hpp",
+    "asio/include/asio/detail/reactor_fwd.hpp",
+    "asio/include/asio/detail/reactor_op.hpp",
+    "asio/include/asio/detail/reactor_op_queue.hpp",
+    "asio/include/asio/detail/recycling_allocator.hpp",
+    "asio/include/asio/detail/regex_fwd.hpp",
+    "asio/include/asio/detail/resolve_endpoint_op.hpp",
+    "asio/include/asio/detail/resolve_op.hpp",
+    "asio/include/asio/detail/resolve_query_op.hpp",
+    "asio/include/asio/detail/resolver_service.hpp",
+    "asio/include/asio/detail/resolver_service_base.hpp",
+    "asio/include/asio/detail/scheduler.hpp",
+    "asio/include/asio/detail/scheduler_operation.hpp",
+    "asio/include/asio/detail/scheduler_thread_info.hpp",
+    "asio/include/asio/detail/scoped_lock.hpp",
+    "asio/include/asio/detail/scoped_ptr.hpp",
+    "asio/include/asio/detail/select_interrupter.hpp",
+    "asio/include/asio/detail/select_reactor.hpp",
+    "asio/include/asio/detail/service_registry.hpp",
+    "asio/include/asio/detail/signal_blocker.hpp",
+    "asio/include/asio/detail/signal_handler.hpp",
+    "asio/include/asio/detail/signal_init.hpp",
+    "asio/include/asio/detail/signal_op.hpp",
+    "asio/include/asio/detail/signal_set_service.hpp",
+    "asio/include/asio/detail/socket_holder.hpp",
+    "asio/include/asio/detail/socket_ops.hpp",
+    "asio/include/asio/detail/socket_option.hpp",
+    "asio/include/asio/detail/socket_select_interrupter.hpp",
+    "asio/include/asio/detail/socket_types.hpp",
+    "asio/include/asio/detail/solaris_fenced_block.hpp",
+    "asio/include/asio/detail/static_mutex.hpp",
+    "asio/include/asio/detail/std_event.hpp",
+    "asio/include/asio/detail/std_global.hpp",
+    "asio/include/asio/detail/std_mutex.hpp",
+    "asio/include/asio/detail/std_static_mutex.hpp",
+    "asio/include/asio/detail/std_thread.hpp",
+    "asio/include/asio/detail/strand_executor_service.hpp",
+    "asio/include/asio/detail/strand_service.hpp",
+    "asio/include/asio/detail/string_view.hpp",
+    "asio/include/asio/detail/thread.hpp",
+    "asio/include/asio/detail/thread_context.hpp",
+    "asio/include/asio/detail/thread_group.hpp",
+    "asio/include/asio/detail/thread_info_base.hpp",
+    "asio/include/asio/detail/throw_error.hpp",
+    "asio/include/asio/detail/throw_exception.hpp",
+    "asio/include/asio/detail/timer_queue.hpp",
+    "asio/include/asio/detail/timer_queue_base.hpp",
+    "asio/include/asio/detail/timer_queue_ptime.hpp",
+    "asio/include/asio/detail/timer_queue_set.hpp",
+    "asio/include/asio/detail/timer_scheduler.hpp",
+    "asio/include/asio/detail/timer_scheduler_fwd.hpp",
+    "asio/include/asio/detail/tss_ptr.hpp",
+    "asio/include/asio/detail/type_traits.hpp",
+    "asio/include/asio/detail/variadic_templates.hpp",
+    "asio/include/asio/detail/wait_handler.hpp",
+    "asio/include/asio/detail/wait_op.hpp",
+    "asio/include/asio/detail/win_event.hpp",
+    "asio/include/asio/detail/win_fd_set_adapter.hpp",
+    "asio/include/asio/detail/win_fenced_block.hpp",
+    "asio/include/asio/detail/win_global.hpp",
+    "asio/include/asio/detail/win_iocp_handle_read_op.hpp",
+    "asio/include/asio/detail/win_iocp_handle_service.hpp",
+    "asio/include/asio/detail/win_iocp_handle_write_op.hpp",
+    "asio/include/asio/detail/win_iocp_io_context.hpp",
+    "asio/include/asio/detail/win_iocp_null_buffers_op.hpp",
+    "asio/include/asio/detail/win_iocp_operation.hpp",
+    "asio/include/asio/detail/win_iocp_overlapped_op.hpp",
+    "asio/include/asio/detail/win_iocp_overlapped_ptr.hpp",
+    "asio/include/asio/detail/win_iocp_serial_port_service.hpp",
+    "asio/include/asio/detail/win_iocp_socket_accept_op.hpp",
+    "asio/include/asio/detail/win_iocp_socket_connect_op.hpp",
+    "asio/include/asio/detail/win_iocp_socket_recv_op.hpp",
+    "asio/include/asio/detail/win_iocp_socket_recvfrom_op.hpp",
+    "asio/include/asio/detail/win_iocp_socket_recvmsg_op.hpp",
+    "asio/include/asio/detail/win_iocp_socket_send_op.hpp",
+    "asio/include/asio/detail/win_iocp_socket_service.hpp",
+    "asio/include/asio/detail/win_iocp_socket_service_base.hpp",
+    "asio/include/asio/detail/win_iocp_thread_info.hpp",
+    "asio/include/asio/detail/win_iocp_wait_op.hpp",
+    "asio/include/asio/detail/win_mutex.hpp",
+    "asio/include/asio/detail/win_object_handle_service.hpp",
+    "asio/include/asio/detail/win_static_mutex.hpp",
+    "asio/include/asio/detail/win_thread.hpp",
+    "asio/include/asio/detail/win_tss_ptr.hpp",
+    "asio/include/asio/detail/winapp_thread.hpp",
+    "asio/include/asio/detail/wince_thread.hpp",
+    "asio/include/asio/detail/winrt_async_manager.hpp",
+    "asio/include/asio/detail/winrt_async_op.hpp",
+    "asio/include/asio/detail/winrt_resolve_op.hpp",
+    "asio/include/asio/detail/winrt_resolver_service.hpp",
+    "asio/include/asio/detail/winrt_socket_connect_op.hpp",
+    "asio/include/asio/detail/winrt_socket_recv_op.hpp",
+    "asio/include/asio/detail/winrt_socket_send_op.hpp",
+    "asio/include/asio/detail/winrt_ssocket_service.hpp",
+    "asio/include/asio/detail/winrt_ssocket_service_base.hpp",
+    "asio/include/asio/detail/winrt_timer_scheduler.hpp",
+    "asio/include/asio/detail/winrt_utils.hpp",
+    "asio/include/asio/detail/winsock_init.hpp",
+    "asio/include/asio/detail/work_dispatcher.hpp",
+    "asio/include/asio/detail/wrapped_handler.hpp",
+    "asio/include/asio/dispatch.hpp",
+    "asio/include/asio/error.hpp",
+    "asio/include/asio/error_code.hpp",
+    "asio/include/asio/execution_context.hpp",
+    "asio/include/asio/executor.hpp",
+    "asio/include/asio/executor_work_guard.hpp",
+    "asio/include/asio/generic/basic_endpoint.hpp",
+    "asio/include/asio/generic/datagram_protocol.hpp",
+    "asio/include/asio/generic/detail/endpoint.hpp",
+    "asio/include/asio/generic/detail/impl/endpoint.ipp",
+    "asio/include/asio/generic/raw_protocol.hpp",
+    "asio/include/asio/generic/seq_packet_protocol.hpp",
+    "asio/include/asio/generic/stream_protocol.hpp",
+    "asio/include/asio/handler_alloc_hook.hpp",
+    "asio/include/asio/handler_continuation_hook.hpp",
+    "asio/include/asio/handler_invoke_hook.hpp",
+    "asio/include/asio/handler_type.hpp",
+    "asio/include/asio/high_resolution_timer.hpp",
+    "asio/include/asio/impl/buffered_read_stream.hpp",
+    "asio/include/asio/impl/buffered_write_stream.hpp",
+    "asio/include/asio/impl/connect.hpp",
+    "asio/include/asio/impl/defer.hpp",
+    "asio/include/asio/impl/dispatch.hpp",
+    "asio/include/asio/impl/error.ipp",
+    "asio/include/asio/impl/error_code.ipp",
+    "asio/include/asio/impl/execution_context.hpp",
+    "asio/include/asio/impl/execution_context.ipp",
+    "asio/include/asio/impl/executor.hpp",
+    "asio/include/asio/impl/executor.ipp",
+    "asio/include/asio/impl/handler_alloc_hook.ipp",
+    "asio/include/asio/impl/io_context.hpp",
+    "asio/include/asio/impl/io_context.ipp",
+    "asio/include/asio/impl/post.hpp",
+    "asio/include/asio/impl/read.hpp",
+    "asio/include/asio/impl/read_at.hpp",
+    "asio/include/asio/impl/read_until.hpp",
+    "asio/include/asio/impl/serial_port_base.hpp",
+    "asio/include/asio/impl/serial_port_base.ipp",
+    "asio/include/asio/impl/spawn.hpp",
+    "asio/include/asio/impl/src.hpp",
+    "asio/include/asio/impl/system_executor.hpp",
+    "asio/include/asio/impl/system_executor.ipp",
+    "asio/include/asio/impl/thread_pool.hpp",
+    "asio/include/asio/impl/thread_pool.ipp",
+    "asio/include/asio/impl/use_future.hpp",
+    "asio/include/asio/impl/write.hpp",
+    "asio/include/asio/impl/write_at.hpp",
+    "asio/include/asio/io_context.hpp",
+    "asio/include/asio/io_context_strand.hpp",
+    "asio/include/asio/io_service.hpp",
+    "asio/include/asio/io_service_strand.hpp",
+    "asio/include/asio/ip/address.hpp",
+    "asio/include/asio/ip/address_v4.hpp",
+    "asio/include/asio/ip/address_v4_iterator.hpp",
+    "asio/include/asio/ip/address_v4_range.hpp",
+    "asio/include/asio/ip/address_v6.hpp",
+    "asio/include/asio/ip/address_v6_iterator.hpp",
+    "asio/include/asio/ip/address_v6_range.hpp",
+    "asio/include/asio/ip/bad_address_cast.hpp",
+    "asio/include/asio/ip/basic_endpoint.hpp",
+    "asio/include/asio/ip/basic_resolver.hpp",
+    "asio/include/asio/ip/basic_resolver_entry.hpp",
+    "asio/include/asio/ip/basic_resolver_iterator.hpp",
+    "asio/include/asio/ip/basic_resolver_query.hpp",
+    "asio/include/asio/ip/basic_resolver_results.hpp",
+    "asio/include/asio/ip/detail/endpoint.hpp",
+    "asio/include/asio/ip/detail/impl/endpoint.ipp",
+    "asio/include/asio/ip/detail/socket_option.hpp",
+    "asio/include/asio/ip/host_name.hpp",
+    "asio/include/asio/ip/icmp.hpp",
+    "asio/include/asio/ip/impl/address.hpp",
+    "asio/include/asio/ip/impl/address.ipp",
+    "asio/include/asio/ip/impl/address_v4.hpp",
+    "asio/include/asio/ip/impl/address_v4.ipp",
+    "asio/include/asio/ip/impl/address_v6.hpp",
+    "asio/include/asio/ip/impl/address_v6.ipp",
+    "asio/include/asio/ip/impl/basic_endpoint.hpp",
+    "asio/include/asio/ip/impl/host_name.ipp",
+    "asio/include/asio/ip/impl/network_v4.hpp",
+    "asio/include/asio/ip/impl/network_v4.ipp",
+    "asio/include/asio/ip/impl/network_v6.hpp",
+    "asio/include/asio/ip/impl/network_v6.ipp",
+    "asio/include/asio/ip/multicast.hpp",
+    "asio/include/asio/ip/network_v4.hpp",
+    "asio/include/asio/ip/network_v6.hpp",
+    "asio/include/asio/ip/resolver_base.hpp",
+    "asio/include/asio/ip/resolver_query_base.hpp",
+    "asio/include/asio/ip/resolver_service.hpp",
+    "asio/include/asio/ip/tcp.hpp",
+    "asio/include/asio/ip/udp.hpp",
+    "asio/include/asio/ip/unicast.hpp",
+    "asio/include/asio/ip/v6_only.hpp",
+    "asio/include/asio/is_executor.hpp",
+    "asio/include/asio/is_read_buffered.hpp",
+    "asio/include/asio/is_write_buffered.hpp",
+    "asio/include/asio/local/basic_endpoint.hpp",
+    "asio/include/asio/local/connect_pair.hpp",
+    "asio/include/asio/local/datagram_protocol.hpp",
+    "asio/include/asio/local/detail/endpoint.hpp",
+    "asio/include/asio/local/detail/impl/endpoint.ipp",
+    "asio/include/asio/local/stream_protocol.hpp",
+    "asio/include/asio/packaged_task.hpp",
+    "asio/include/asio/placeholders.hpp",
+    "asio/include/asio/posix/basic_descriptor.hpp",
+    "asio/include/asio/posix/basic_stream_descriptor.hpp",
+    "asio/include/asio/posix/descriptor_base.hpp",
+    "asio/include/asio/posix/descriptor.hpp",
+    "asio/include/asio/posix/stream_descriptor.hpp",
+    "asio/include/asio/posix/stream_descriptor_service.hpp",
+    "asio/include/asio/post.hpp",
+    "asio/include/asio/raw_socket_service.hpp",
+    "asio/include/asio/read.hpp",
+    "asio/include/asio/read_at.hpp",
+    "asio/include/asio/read_until.hpp",
+    "asio/include/asio/seq_packet_socket_service.hpp",
+    "asio/include/asio/serial_port.hpp",
+    "asio/include/asio/serial_port_base.hpp",
+    "asio/include/asio/serial_port_service.hpp",
+    "asio/include/asio/signal_set.hpp",
+    "asio/include/asio/signal_set_service.hpp",
+    "asio/include/asio/socket_acceptor_service.hpp",
+    "asio/include/asio/socket_base.hpp",
+    "asio/include/asio/spawn.hpp",
+    "asio/include/asio/ssl.hpp",
+    "asio/include/asio/ssl/context.hpp",
+    "asio/include/asio/ssl/context_base.hpp",
+    "asio/include/asio/ssl/detail/buffered_handshake_op.hpp",
+    "asio/include/asio/ssl/detail/engine.hpp",
+    "asio/include/asio/ssl/detail/handshake_op.hpp",
+    "asio/include/asio/ssl/detail/impl/engine.ipp",
+    "asio/include/asio/ssl/detail/impl/openssl_init.ipp",
+    "asio/include/asio/ssl/detail/io.hpp",
+    "asio/include/asio/ssl/detail/openssl_init.hpp",
+    "asio/include/asio/ssl/detail/openssl_types.hpp",
+    "asio/include/asio/ssl/detail/password_callback.hpp",
+    "asio/include/asio/ssl/detail/read_op.hpp",
+    "asio/include/asio/ssl/detail/shutdown_op.hpp",
+    "asio/include/asio/ssl/detail/stream_core.hpp",
+    "asio/include/asio/ssl/detail/verify_callback.hpp",
+    "asio/include/asio/ssl/detail/write_op.hpp",
+    "asio/include/asio/ssl/error.hpp",
+    "asio/include/asio/ssl/impl/context.hpp",
+    "asio/include/asio/ssl/impl/context.ipp",
+    "asio/include/asio/ssl/impl/error.ipp",
+    "asio/include/asio/ssl/impl/rfc2818_verification.ipp",
+    "asio/include/asio/ssl/impl/src.hpp",
+    "asio/include/asio/ssl/rfc2818_verification.hpp",
+    "asio/include/asio/ssl/stream.hpp",
+    "asio/include/asio/ssl/stream_base.hpp",
+    "asio/include/asio/ssl/verify_context.hpp",
+    "asio/include/asio/ssl/verify_mode.hpp",
+    "asio/include/asio/steady_timer.hpp",
+    "asio/include/asio/strand.hpp",
+    "asio/include/asio/stream_socket_service.hpp",
+    "asio/include/asio/streambuf.hpp",
+    "asio/include/asio/system_error.hpp",
+    "asio/include/asio/system_executor.hpp",
+    "asio/include/asio/system_timer.hpp",
+    "asio/include/asio/thread.hpp",
+    "asio/include/asio/thread_pool.hpp",
+    "asio/include/asio/time_traits.hpp",
+    "asio/include/asio/ts/buffer.hpp",
+    "asio/include/asio/ts/executor.hpp",
+    "asio/include/asio/ts/internet.hpp",
+    "asio/include/asio/ts/io_context.hpp",
+    "asio/include/asio/ts/netfwd.hpp",
+    "asio/include/asio/ts/net.hpp",
+    "asio/include/asio/ts/socket.hpp",
+    "asio/include/asio/ts/timer.hpp",
+    "asio/include/asio/unyield.hpp",
+    "asio/include/asio/use_future.hpp",
+    "asio/include/asio/uses_executor.hpp",
+    "asio/include/asio/version.hpp",
+    "asio/include/asio/wait_traits.hpp",
+    "asio/include/asio/waitable_timer_service.hpp",
+    "asio/include/asio/windows/basic_handle.hpp",
+    "asio/include/asio/windows/basic_object_handle.hpp",
+    "asio/include/asio/windows/basic_random_access_handle.hpp",
+    "asio/include/asio/windows/basic_stream_handle.hpp",
+    "asio/include/asio/windows/object_handle.hpp",
+    "asio/include/asio/windows/object_handle_service.hpp",
+    "asio/include/asio/windows/overlapped_handle.hpp",
+    "asio/include/asio/windows/overlapped_ptr.hpp",
+    "asio/include/asio/windows/random_access_handle.hpp",
+    "asio/include/asio/windows/random_access_handle_service.hpp",
+    "asio/include/asio/windows/stream_handle.hpp",
+    "asio/include/asio/windows/stream_handle_service.hpp",
+    "asio/include/asio/write.hpp",
+    "asio/include/asio/write_at.hpp",
+    "asio/include/asio/yield.hpp",
+  ]
+
+  public_configs = [ ":asio_config" ]
+}
+
+executable("asio_unittests") {
+  sources = [
+    "asio/src/tests/unit/archetypes/async_ops.hpp",
+    "asio/src/tests/unit/archetypes/async_result.hpp",
+    "asio/src/tests/unit/archetypes/deprecated_async_ops.hpp",
+    "asio/src/tests/unit/archetypes/deprecated_async_result.hpp",
+    "asio/src/tests/unit/archetypes/gettable_socket_option.hpp",
+    "asio/src/tests/unit/archetypes/io_control_command.hpp",
+    "asio/src/tests/unit/archetypes/settable_socket_option.hpp",
+    "asio/src/tests/unit/associated_allocator.cpp",
+    "asio/src/tests/unit/associated_executor.cpp",
+    "asio/src/tests/unit/async_result.cpp",
+    "asio/src/tests/unit/basic_datagram_socket.cpp",
+    "asio/src/tests/unit/basic_deadline_timer.cpp",
+    "asio/src/tests/unit/basic_raw_socket.cpp",
+    "asio/src/tests/unit/basic_seq_packet_socket.cpp",
+    "asio/src/tests/unit/basic_serial_port.cpp",
+    "asio/src/tests/unit/basic_signal_set.cpp",
+    "asio/src/tests/unit/basic_socket_acceptor.cpp",
+    "asio/src/tests/unit/basic_stream_socket.cpp",
+    "asio/src/tests/unit/basic_streambuf.cpp",
+    "asio/src/tests/unit/basic_waitable_timer.cpp",
+    "asio/src/tests/unit/bind_executor.cpp",
+    "asio/src/tests/unit/buffer.cpp",
+    "asio/src/tests/unit/buffered_read_stream.cpp",
+    "asio/src/tests/unit/buffered_stream.cpp",
+    "asio/src/tests/unit/buffered_write_stream.cpp",
+    "asio/src/tests/unit/buffers_iterator.cpp",
+    "asio/src/tests/unit/completion_condition.cpp",
+    "asio/src/tests/unit/connect.cpp",
+    "asio/src/tests/unit/coroutine.cpp",
+    "asio/src/tests/unit/datagram_socket_service.cpp",
+    "asio/src/tests/unit/deadline_timer.cpp",
+    "asio/src/tests/unit/deadline_timer_service.cpp",
+    "asio/src/tests/unit/defer.cpp",
+    "asio/src/tests/unit/dispatch.cpp",
+    "asio/src/tests/unit/error.cpp",
+    "asio/src/tests/unit/execution_context.cpp",
+    "asio/src/tests/unit/executor.cpp",
+    "asio/src/tests/unit/executor_work_guard.cpp",
+    "asio/src/tests/unit/generic/basic_endpoint.cpp",
+    "asio/src/tests/unit/generic/datagram_protocol.cpp",
+    "asio/src/tests/unit/generic/raw_protocol.cpp",
+    "asio/src/tests/unit/generic/seq_packet_protocol.cpp",
+    "asio/src/tests/unit/generic/stream_protocol.cpp",
+    "asio/src/tests/unit/high_resolution_timer.cpp",
+    "asio/src/tests/unit/io_context.cpp",
+    "asio/src/tests/unit/ip/address.cpp",
+    "asio/src/tests/unit/ip/address_v4.cpp",
+    "asio/src/tests/unit/ip/address_v4_iterator.cpp",
+    "asio/src/tests/unit/ip/address_v4_range.cpp",
+    "asio/src/tests/unit/ip/address_v6.cpp",
+    "asio/src/tests/unit/ip/address_v6_iterator.cpp",
+    "asio/src/tests/unit/ip/address_v6_range.cpp",
+    "asio/src/tests/unit/ip/basic_endpoint.cpp",
+    "asio/src/tests/unit/ip/basic_resolver.cpp",
+    "asio/src/tests/unit/ip/basic_resolver_entry.cpp",
+    "asio/src/tests/unit/ip/basic_resolver_iterator.cpp",
+    "asio/src/tests/unit/ip/basic_resolver_query.cpp",
+    "asio/src/tests/unit/ip/host_name.cpp",
+    "asio/src/tests/unit/ip/icmp.cpp",
+    "asio/src/tests/unit/ip/multicast.cpp",
+    "asio/src/tests/unit/ip/network_v4.cpp",
+    "asio/src/tests/unit/ip/network_v6.cpp",
+    "asio/src/tests/unit/ip/resolver_query_base.cpp",
+    "asio/src/tests/unit/ip/resolver_service.cpp",
+    "asio/src/tests/unit/ip/tcp.cpp",
+    "asio/src/tests/unit/ip/udp.cpp",
+    "asio/src/tests/unit/ip/unicast.cpp",
+    "asio/src/tests/unit/ip/v6_only.cpp",
+    "asio/src/tests/unit/is_read_buffered.cpp",
+    "asio/src/tests/unit/is_write_buffered.cpp",
+    "asio/src/tests/unit/local/basic_endpoint.cpp",
+    "asio/src/tests/unit/local/connect_pair.cpp",
+    "asio/src/tests/unit/local/datagram_protocol.cpp",
+    "asio/src/tests/unit/local/stream_protocol.cpp",
+    "asio/src/tests/unit/main.cpp",
+    "asio/src/tests/unit/packaged_task.cpp",
+    "asio/src/tests/unit/placeholders.cpp",
+    # "asio/src/tests/unit/posix/basic_descriptor.cpp",
+    # "asio/src/tests/unit/posix/basic_stream_descriptor.cpp",
+    "asio/src/tests/unit/posix/descriptor_base.cpp",
+    "asio/src/tests/unit/posix/descriptor.cpp",
+    # "asio/src/tests/unit/posix/stream_descriptor.cpp",
+    # "asio/src/tests/unit/posix/stream_descriptor_service.cpp",
+    "asio/src/tests/unit/post.cpp",
+    "asio/src/tests/unit/raw_socket_service.cpp",
+    "asio/src/tests/unit/read.cpp",
+    "asio/src/tests/unit/read_at.cpp",
+    "asio/src/tests/unit/read_until.cpp",
+    "asio/src/tests/unit/seq_packet_socket_service.cpp",
+    "asio/src/tests/unit/serial_port.cpp",
+    "asio/src/tests/unit/serial_port_base.cpp",
+    "asio/src/tests/unit/serial_port_service.cpp",
+    "asio/src/tests/unit/signal_set.cpp",
+    "asio/src/tests/unit/signal_set_service.cpp",
+    "asio/src/tests/unit/socket_acceptor_service.cpp",
+    "asio/src/tests/unit/socket_base.cpp",
+    # "asio/src/tests/unit/ssl/context.cpp",
+    # "asio/src/tests/unit/ssl/context_base.cpp",
+    # "asio/src/tests/unit/ssl/rfc2818_verification.cpp",
+    # "asio/src/tests/unit/ssl/stream.cpp",
+    "asio/src/tests/unit/ssl/stream_base.cpp",
+    "asio/src/tests/unit/steady_timer.cpp",
+    "asio/src/tests/unit/strand.cpp",
+    "asio/src/tests/unit/stream_socket_service.cpp",
+    "asio/src/tests/unit/streambuf.cpp",
+    "asio/src/tests/unit/system_timer.cpp",
+    "asio/src/tests/unit/thread.cpp",
+    "asio/src/tests/unit/time_traits.cpp",
+    "asio/src/tests/unit/unit_test.hpp",
+    "asio/src/tests/unit/use_future.cpp",
+    "asio/src/tests/unit/uses_executor.cpp",
+    "asio/src/tests/unit/wait_traits.cpp",
+    "asio/src/tests/unit/waitable_timer_service.cpp",
+    # "asio/src/tests/unit/windows/basic_handle.cpp",
+    # "asio/src/tests/unit/windows/basic_object_handle.cpp",
+    # "asio/src/tests/unit/windows/basic_random_access_handle.cpp",
+    # "asio/src/tests/unit/windows/basic_stream_handle.cpp",
+    # "asio/src/tests/unit/windows/object_handle.cpp",
+    # "asio/src/tests/unit/windows/object_handle_service.cpp",
+    # "asio/src/tests/unit/windows/overlapped_handle.cpp",
+    # "asio/src/tests/unit/windows/overlapped_ptr.cpp",
+    # "asio/src/tests/unit/windows/random_access_handle.cpp",
+    # "asio/src/tests/unit/windows/random_access_handle_service.cpp",
+    # "asio/src/tests/unit/windows/stream_handle.cpp",
+    # "asio/src/tests/unit/windows/stream_handle_service.cpp",
+    "asio/src/tests/unit/write.cpp",
+    "asio/src/tests/unit/write_at.cpp",
+  ]
+
+  cflags_cc = [ "-Wno-unused-variable" ]
+
+  deps = [
+    ":asio",
+  ]
+
+  configs -= [ "//build/config:no_exceptions" ]
+}
diff --git a/asio/include/asio/detail/config.hpp b/asio/include/asio/detail/config.hpp
index 7bd6a94..d9bb835 100644
--- a/asio/include/asio/detail/config.hpp
+++ b/asio/include/asio/detail/config.hpp
@@ -849,7 +849,8 @@
    || defined(__FreeBSD__) \
    || defined(__NetBSD__) \
    || defined(__OpenBSD__) \
-   || defined(__linux__)
+   || defined(__linux__) \
+    || defined(__Fuchsia__)
 #   define ASIO_HAS_UNISTD_H 1
 #  endif
 # endif // !defined(ASIO_HAS_BOOST_CONFIG)
diff --git a/asio/include/asio/detail/handler_type_requirements.hpp b/asio/include/asio/detail/handler_type_requirements.hpp
index aaa473d..c72d8e6 100644
--- a/asio/include/asio/detail/handler_type_requirements.hpp
+++ b/asio/include/asio/detail/handler_type_requirements.hpp
@@ -54,7 +54,9 @@
 #endif // defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS)
 
 // Newer gcc, clang need special treatment to suppress unused typedef warnings.
-#if defined(__clang__) && (__clang_major__ >= 7)
+#if defined(__Fuchsia__)
+# define ASIO_UNUSED_TYPEDEF __attribute__((__unused__))
+#elif defined(__clang__) && (__clang_major__ >= 7)
 # define ASIO_UNUSED_TYPEDEF __attribute__((__unused__))
 #elif defined(__GNUC__)
 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) || (__GNUC__ > 4)
diff --git a/asio/include/asio/detail/impl/socket_ops.ipp b/asio/include/asio/detail/impl/socket_ops.ipp
index d9cc1c9..9c1336c 100644
--- a/asio/include/asio/detail/impl/socket_ops.ipp
+++ b/asio/include/asio/detail/impl/socket_ops.ipp
@@ -332,14 +332,14 @@
       ioctl_arg_type arg = 0;
       ::ioctlsocket(s, FIONBIO, &arg);
 #else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# if defined(__SYMBIAN32__)
+# if defined(__SYMBIAN32__) || defined(__Fuchsia__)
       int flags = ::fcntl(s, F_GETFL, 0);
       if (flags >= 0)
         ::fcntl(s, F_SETFL, flags & ~O_NONBLOCK);
-# else // defined(__SYMBIAN32__)
+# else // defined(__SYMBIAN32__) || defined(__Fuchsia__)
       ioctl_arg_type arg = 0;
       ::ioctl(s, FIONBIO, &arg);
-# endif // defined(__SYMBIAN32__)
+# endif // defined(__SYMBIAN32__) || defined(__Fuchsia__)
 #endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
       state &= ~non_blocking;
 
@@ -370,7 +370,7 @@
 #if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
   ioctl_arg_type arg = (value ? 1 : 0);
   int result = error_wrapper(::ioctlsocket(s, FIONBIO, &arg), ec);
-#elif defined(__SYMBIAN32__)
+#elif defined(__SYMBIAN32__) || defined(__Fuchsia__)
   int result = error_wrapper(::fcntl(s, F_GETFL, 0), ec);
   if (result >= 0)
   {
@@ -423,7 +423,7 @@
 #if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
   ioctl_arg_type arg = (value ? 1 : 0);
   int result = error_wrapper(::ioctlsocket(s, FIONBIO, &arg), ec);
-#elif defined(__SYMBIAN32__)
+#elif defined(__SYMBIAN32__) || defined(__Fuchsia__)
   int result = error_wrapper(::fcntl(s, F_GETFL, 0), ec);
   if (result >= 0)
   {
diff --git a/asio/include/asio/detail/socket_types.hpp b/asio/include/asio/detail/socket_types.hpp
index 3114c08..436cb4f 100644
--- a/asio/include/asio/detail/socket_types.hpp
+++ b/asio/include/asio/detail/socket_types.hpp
@@ -58,7 +58,11 @@
 #else
 # include <sys/ioctl.h>
 # if !defined(__SYMBIAN32__)
-#  include <sys/poll.h>
+#  if defined(__Fuchsia__)
+#   include <poll.h>
+#  else
+#   include <sys/poll.h>
+#  endif
 # endif
 # include <sys/types.h>
 # include <sys/stat.h>
diff --git a/asio/include/asio/ssl/detail/impl/openssl_init.ipp b/asio/include/asio/ssl/detail/impl/openssl_init.ipp
index 392eff9..3cf9778 100644
--- a/asio/include/asio/ssl/detail/impl/openssl_init.ipp
+++ b/asio/include/asio/ssl/detail/impl/openssl_init.ipp
@@ -79,7 +79,8 @@
     ::ERR_remove_thread_state(NULL);
 #endif // (OPENSSL_VERSION_NUMBER < 0x10000000L)
 #if (OPENSSL_VERSION_NUMBER >= 0x10002000L) \
-    && (OPENSSL_VERSION_NUMBER < 0x10100000L)
+  && (OPENSSL_VERSION_NUMBER < 0x10100000L) \
+  && !defined(OPENSSL_IS_BORINGSSL)
     ::SSL_COMP_free_compression_methods();
 #endif // (OPENSSL_VERSION_NUMBER >= 0x10002000L)
        // && (OPENSSL_VERSION_NUMBER < 0x10100000L)
diff --git a/asio/include/asio/ssl/impl/rfc2818_verification.ipp b/asio/include/asio/ssl/impl/rfc2818_verification.ipp
index f84b025..810b742 100644
--- a/asio/include/asio/ssl/impl/rfc2818_verification.ipp
+++ b/asio/include/asio/ssl/impl/rfc2818_verification.ipp
@@ -54,7 +54,11 @@
   // or IP address entries.
   GENERAL_NAMES* gens = static_cast<GENERAL_NAMES*>(
       X509_get_ext_d2i(cert, NID_subject_alt_name, 0, 0));
+#if defined(OPENSSL_IS_BORINGSSL)
+  for (size_t i = 0; i < sk_GENERAL_NAME_num(gens); ++i)
+#else
   for (int i = 0; i < sk_GENERAL_NAME_num(gens); ++i)
+#endif
   {
     GENERAL_NAME* gen = sk_GENERAL_NAME_value(gens, i);
     if (gen->type == GEN_DNS && !is_address)
diff --git a/asio/src/tests/unit/associated_allocator.cpp b/asio/src/tests/unit/associated_allocator.cpp
index 7fe80ab..f4ebbd6 100644
--- a/asio/src/tests/unit/associated_allocator.cpp
+++ b/asio/src/tests/unit/associated_allocator.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "associated_allocator",
+  associated_allocator,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/associated_executor.cpp b/asio/src/tests/unit/associated_executor.cpp
index a91fbb6..df9a377 100644
--- a/asio/src/tests/unit/associated_executor.cpp
+++ b/asio/src/tests/unit/associated_executor.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "associated_executor",
+  associated_executor,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/async_result.cpp b/asio/src/tests/unit/async_result.cpp
index 479aeb5..bdf3585 100644
--- a/asio/src/tests/unit/async_result.cpp
+++ b/asio/src/tests/unit/async_result.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "async_result",
+  async_result,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/basic_datagram_socket.cpp b/asio/src/tests/unit/basic_datagram_socket.cpp
index 8b17b5e..1e51f53 100644
--- a/asio/src/tests/unit/basic_datagram_socket.cpp
+++ b/asio/src/tests/unit/basic_datagram_socket.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "basic_datagram_socket",
+  basic_datagram_socket,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/basic_deadline_timer.cpp b/asio/src/tests/unit/basic_deadline_timer.cpp
index 6524403..ec7411b 100644
--- a/asio/src/tests/unit/basic_deadline_timer.cpp
+++ b/asio/src/tests/unit/basic_deadline_timer.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "basic_deadline_timer",
+  basic_deadline_timer,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/basic_raw_socket.cpp b/asio/src/tests/unit/basic_raw_socket.cpp
index 0b983e3..ecd6726 100644
--- a/asio/src/tests/unit/basic_raw_socket.cpp
+++ b/asio/src/tests/unit/basic_raw_socket.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "basic_raw_socket",
+  basic_raw_socket,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/basic_seq_packet_socket.cpp b/asio/src/tests/unit/basic_seq_packet_socket.cpp
index c9f325d..a1f6829 100644
--- a/asio/src/tests/unit/basic_seq_packet_socket.cpp
+++ b/asio/src/tests/unit/basic_seq_packet_socket.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "basic_seq_packet_socket",
+  basic_seq_packet_socket,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/basic_serial_port.cpp b/asio/src/tests/unit/basic_serial_port.cpp
index a6c4e67..dc69f1d 100644
--- a/asio/src/tests/unit/basic_serial_port.cpp
+++ b/asio/src/tests/unit/basic_serial_port.cpp
@@ -21,6 +21,6 @@
 
 ASIO_TEST_SUITE
 (
-  "basic_serial_port",
+  basic_serial_port,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/basic_signal_set.cpp b/asio/src/tests/unit/basic_signal_set.cpp
index f3f87c5..4bce1f0 100644
--- a/asio/src/tests/unit/basic_signal_set.cpp
+++ b/asio/src/tests/unit/basic_signal_set.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "basic_signal_set",
+  basic_signal_set,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/basic_socket_acceptor.cpp b/asio/src/tests/unit/basic_socket_acceptor.cpp
index 4e6629f..6c40e2c 100644
--- a/asio/src/tests/unit/basic_socket_acceptor.cpp
+++ b/asio/src/tests/unit/basic_socket_acceptor.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "basic_socket_acceptor",
+  basic_socket_acceptor,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/basic_stream_socket.cpp b/asio/src/tests/unit/basic_stream_socket.cpp
index b04a4dc..617d162 100644
--- a/asio/src/tests/unit/basic_stream_socket.cpp
+++ b/asio/src/tests/unit/basic_stream_socket.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "basic_stream_socket",
+  basic_stream_socket,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/basic_streambuf.cpp b/asio/src/tests/unit/basic_streambuf.cpp
index ff91662..97ef628 100644
--- a/asio/src/tests/unit/basic_streambuf.cpp
+++ b/asio/src/tests/unit/basic_streambuf.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "basic_streambuf",
+  basic_streambuf,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/basic_waitable_timer.cpp b/asio/src/tests/unit/basic_waitable_timer.cpp
index 6aa90cb..175de08 100644
--- a/asio/src/tests/unit/basic_waitable_timer.cpp
+++ b/asio/src/tests/unit/basic_waitable_timer.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "basic_waitable_timer",
+  basic_waitable_timer,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/bind_executor.cpp b/asio/src/tests/unit/bind_executor.cpp
index 74f2463..3c2da5d 100644
--- a/asio/src/tests/unit/bind_executor.cpp
+++ b/asio/src/tests/unit/bind_executor.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "bind_executor",
+  bind_executor,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/buffer.cpp b/asio/src/tests/unit/buffer.cpp
index b285330..3c53751 100644
--- a/asio/src/tests/unit/buffer.cpp
+++ b/asio/src/tests/unit/buffer.cpp
@@ -561,7 +561,7 @@
 
 ASIO_TEST_SUITE
 (
-  "buffer",
+  buffer,
   ASIO_COMPILE_TEST_CASE(buffer_compile::test)
   ASIO_TEST_CASE(buffer_copy_runtime::test)
 )
diff --git a/asio/src/tests/unit/buffered_read_stream.cpp b/asio/src/tests/unit/buffered_read_stream.cpp
index 28a0db1..77b8a3f 100644
--- a/asio/src/tests/unit/buffered_read_stream.cpp
+++ b/asio/src/tests/unit/buffered_read_stream.cpp
@@ -36,6 +36,8 @@
 # include <functional>
 #endif // defined(ASIO_HAS_BOOST_BIND)
 
+namespace {
+
 typedef asio::buffered_read_stream<
     asio::ip::tcp::socket> stream_type;
 
@@ -337,9 +339,11 @@
   client_socket.async_read_some(asio::buffer(read_buf), handle_read_eof);
 }
 
+}  // namespace
+
 ASIO_TEST_SUITE
 (
-  "buffered_read_stream",
+  buffered_read_stream,
   ASIO_TEST_CASE(test_compile)
   ASIO_TEST_CASE(test_sync_operations)
   ASIO_TEST_CASE(test_async_operations)
diff --git a/asio/src/tests/unit/buffered_stream.cpp b/asio/src/tests/unit/buffered_stream.cpp
index 7e077d0..3fbd957 100644
--- a/asio/src/tests/unit/buffered_stream.cpp
+++ b/asio/src/tests/unit/buffered_stream.cpp
@@ -36,6 +36,8 @@
 # include <functional>
 #endif // defined(ASIO_HAS_BOOST_BIND)
 
+namespace {
+
 typedef asio::buffered_stream<
     asio::ip::tcp::socket> stream_type;
 
@@ -363,9 +365,11 @@
   client_socket.async_read_some(asio::buffer(read_buf), handle_read_eof);
 }
 
+}  // namespace
+
 ASIO_TEST_SUITE
 (
-  "buffered_stream",
+  buffered_stream,
   ASIO_TEST_CASE(test_compile)
   ASIO_TEST_CASE(test_sync_operations)
   ASIO_TEST_CASE(test_async_operations)
diff --git a/asio/src/tests/unit/buffered_write_stream.cpp b/asio/src/tests/unit/buffered_write_stream.cpp
index dd52050..a513277 100644
--- a/asio/src/tests/unit/buffered_write_stream.cpp
+++ b/asio/src/tests/unit/buffered_write_stream.cpp
@@ -36,6 +36,8 @@
 # include <functional>
 #endif // defined(ASIO_HAS_BOOST_BIND)
 
+namespace {
+
 typedef asio::buffered_write_stream<
     asio::ip::tcp::socket> stream_type;
 
@@ -352,9 +354,11 @@
   client_socket.async_read_some(asio::buffer(read_buf), handle_read_eof);
 }
 
+}  // namespace
+
 ASIO_TEST_SUITE
 (
-  "buffered_write_stream",
+  buffered_write_stream,
   ASIO_TEST_CASE(test_compile)
   ASIO_TEST_CASE(test_sync_operations)
   ASIO_TEST_CASE(test_async_operations)
diff --git a/asio/src/tests/unit/buffers_iterator.cpp b/asio/src/tests/unit/buffers_iterator.cpp
index bd8c275..32e661f 100644
--- a/asio/src/tests/unit/buffers_iterator.cpp
+++ b/asio/src/tests/unit/buffers_iterator.cpp
@@ -287,6 +287,6 @@
 
 ASIO_TEST_SUITE
 (
-  "buffers_iterator",
+  buffers_iterator,
   ASIO_TEST_CASE(buffers_iterator_compile::test)
 )
diff --git a/asio/src/tests/unit/completion_condition.cpp b/asio/src/tests/unit/completion_condition.cpp
index 43e6454..a1e5645 100644
--- a/asio/src/tests/unit/completion_condition.cpp
+++ b/asio/src/tests/unit/completion_condition.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "completion_condition",
+  completion_condition,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/connect.cpp b/asio/src/tests/unit/connect.cpp
index 3b0a432..76f203a 100644
--- a/asio/src/tests/unit/connect.cpp
+++ b/asio/src/tests/unit/connect.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "connect",
+  connect,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/coroutine.cpp b/asio/src/tests/unit/coroutine.cpp
index 162cacd..350111d 100644
--- a/asio/src/tests/unit/coroutine.cpp
+++ b/asio/src/tests/unit/coroutine.cpp
@@ -104,7 +104,7 @@
 
 ASIO_TEST_SUITE
 (
-  "coroutine",
+  coroutine,
   ASIO_TEST_CASE(yield_break_test)
   ASIO_TEST_CASE(return_test)
   ASIO_TEST_CASE(exception_test)
diff --git a/asio/src/tests/unit/datagram_socket_service.cpp b/asio/src/tests/unit/datagram_socket_service.cpp
index 5c4fe13..5b5837b 100644
--- a/asio/src/tests/unit/datagram_socket_service.cpp
+++ b/asio/src/tests/unit/datagram_socket_service.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "datagram_socket_service",
+  datagram_socket_service,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/deadline_timer.cpp b/asio/src/tests/unit/deadline_timer.cpp
index 9c48b62..d6950b8 100644
--- a/asio/src/tests/unit/deadline_timer.cpp
+++ b/asio/src/tests/unit/deadline_timer.cpp
@@ -29,6 +29,8 @@
 
 using namespace boost::posix_time;
 
+namespace {
+
 void increment(int* count)
 {
   ++(*count);
@@ -373,9 +375,11 @@
 #endif // defined(ASIO_HAS_MOVE)
 }
 
+}  // namespace
+
 ASIO_TEST_SUITE
 (
-  "deadline_timer",
+  deadline_timer,
   ASIO_TEST_CASE(deadline_timer_test)
   ASIO_TEST_CASE(deadline_timer_cancel_test)
   ASIO_TEST_CASE(deadline_timer_custom_allocation_test)
@@ -386,7 +390,7 @@
 #else // defined(ASIO_HAS_BOOST_DATE_TIME)
 ASIO_TEST_SUITE
 (
-  "deadline_timer",
+  deadline_timer,
   ASIO_TEST_CASE(null_test)
 )
 #endif // defined(ASIO_HAS_BOOST_DATE_TIME)
diff --git a/asio/src/tests/unit/deadline_timer_service.cpp b/asio/src/tests/unit/deadline_timer_service.cpp
index 87c7aa6..93e5fd8 100644
--- a/asio/src/tests/unit/deadline_timer_service.cpp
+++ b/asio/src/tests/unit/deadline_timer_service.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "deadline_timer_service",
+  deadline_timer_service,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/defer.cpp b/asio/src/tests/unit/defer.cpp
index 90163f6..cb10884 100644
--- a/asio/src/tests/unit/defer.cpp
+++ b/asio/src/tests/unit/defer.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "defer",
+  defer,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/dispatch.cpp b/asio/src/tests/unit/dispatch.cpp
index 64c2035..8b0f485 100644
--- a/asio/src/tests/unit/dispatch.cpp
+++ b/asio/src/tests/unit/dispatch.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "dispatch",
+  dispatch,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/error.cpp b/asio/src/tests/unit/error.cpp
index d4c9b32..ab164c8 100644
--- a/asio/src/tests/unit/error.cpp
+++ b/asio/src/tests/unit/error.cpp
@@ -84,6 +84,6 @@
 
 ASIO_TEST_SUITE
 (
-  "error",
+  error,
   ASIO_TEST_CASE(error_test)
 )
diff --git a/asio/src/tests/unit/execution_context.cpp b/asio/src/tests/unit/execution_context.cpp
index 802c483..03763f7 100644
--- a/asio/src/tests/unit/execution_context.cpp
+++ b/asio/src/tests/unit/execution_context.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "execution_context",
+  execution_context,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/executor.cpp b/asio/src/tests/unit/executor.cpp
index 493e363..f5cd786 100644
--- a/asio/src/tests/unit/executor.cpp
+++ b/asio/src/tests/unit/executor.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "executor",
+  executor,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/executor_work_guard.cpp b/asio/src/tests/unit/executor_work_guard.cpp
index ac62bc5..6cef24e 100644
--- a/asio/src/tests/unit/executor_work_guard.cpp
+++ b/asio/src/tests/unit/executor_work_guard.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "executor_work_guard",
+  executor_work_guard,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/generic/basic_endpoint.cpp b/asio/src/tests/unit/generic/basic_endpoint.cpp
index ef6d2b1..303c5df 100644
--- a/asio/src/tests/unit/generic/basic_endpoint.cpp
+++ b/asio/src/tests/unit/generic/basic_endpoint.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "generic/basic_endpoint",
+  generic_basic_endpoint,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/generic/datagram_protocol.cpp b/asio/src/tests/unit/generic/datagram_protocol.cpp
index 32f636b..e091e17 100644
--- a/asio/src/tests/unit/generic/datagram_protocol.cpp
+++ b/asio/src/tests/unit/generic/datagram_protocol.cpp
@@ -262,6 +262,6 @@
 
 ASIO_TEST_SUITE
 (
-  "generic/datagram_protocol",
+  generic_datagram_protocol,
   ASIO_TEST_CASE(generic_datagram_protocol_socket_compile::test)
 )
diff --git a/asio/src/tests/unit/generic/raw_protocol.cpp b/asio/src/tests/unit/generic/raw_protocol.cpp
index 92c0efa..d19a702 100644
--- a/asio/src/tests/unit/generic/raw_protocol.cpp
+++ b/asio/src/tests/unit/generic/raw_protocol.cpp
@@ -262,6 +262,6 @@
 
 ASIO_TEST_SUITE
 (
-  "generic/raw_protocol",
+  generic_raw_protocol,
   ASIO_TEST_CASE(generic_raw_protocol_socket_compile::test)
 )
diff --git a/asio/src/tests/unit/generic/seq_packet_protocol.cpp b/asio/src/tests/unit/generic/seq_packet_protocol.cpp
index e660126..33e0e72 100644
--- a/asio/src/tests/unit/generic/seq_packet_protocol.cpp
+++ b/asio/src/tests/unit/generic/seq_packet_protocol.cpp
@@ -204,6 +204,6 @@
 
 ASIO_TEST_SUITE
 (
-  "generic/seq_packet_protocol",
+  generic_seq_packet_protocol,
   ASIO_TEST_CASE(generic_seq_packet_protocol_socket_compile::test)
 )
diff --git a/asio/src/tests/unit/generic/stream_protocol.cpp b/asio/src/tests/unit/generic/stream_protocol.cpp
index 7962069..dca8f31 100644
--- a/asio/src/tests/unit/generic/stream_protocol.cpp
+++ b/asio/src/tests/unit/generic/stream_protocol.cpp
@@ -247,6 +247,6 @@
 
 ASIO_TEST_SUITE
 (
-  "generic/stream_protocol",
+  generic_stream_protocol,
   ASIO_TEST_CASE(generic_stream_protocol_socket_compile::test)
 )
diff --git a/asio/src/tests/unit/high_resolution_timer.cpp b/asio/src/tests/unit/high_resolution_timer.cpp
index 894bd74..cc7c7db 100644
--- a/asio/src/tests/unit/high_resolution_timer.cpp
+++ b/asio/src/tests/unit/high_resolution_timer.cpp
@@ -25,6 +25,6 @@
 
 ASIO_TEST_SUITE
 (
-  "high_resolution_timer",
+  high_resolution_timer,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/io_context.cpp b/asio/src/tests/unit/io_context.cpp
index 530d139..e43a19d 100644
--- a/asio/src/tests/unit/io_context.cpp
+++ b/asio/src/tests/unit/io_context.cpp
@@ -51,6 +51,8 @@
 namespace chronons = asio::chrono;
 #endif // defined(ASIO_HAS_BOOST_DATE_TIME)
 
+namespace {
+
 void increment(int* count)
 {
   ++(*count);
@@ -354,9 +356,11 @@
   ASIO_CHECK(!asio::has_service<test_service>(ioc3));
 }
 
+}  // namespace
+
 ASIO_TEST_SUITE
 (
-  "io_context",
+  io_context,
   ASIO_TEST_CASE(io_context_test)
   ASIO_TEST_CASE(io_context_service_test)
 )
diff --git a/asio/src/tests/unit/ip/address.cpp b/asio/src/tests/unit/ip/address.cpp
index e0b61d9..1418347 100644
--- a/asio/src/tests/unit/ip/address.cpp
+++ b/asio/src/tests/unit/ip/address.cpp
@@ -139,6 +139,6 @@
 
 ASIO_TEST_SUITE
 (
-  "ip/address",
+  ip_address,
   ASIO_TEST_CASE(ip_address_compile::test)
 )
diff --git a/asio/src/tests/unit/ip/address_v4.cpp b/asio/src/tests/unit/ip/address_v4.cpp
index e65f12b..8d140eb 100644
--- a/asio/src/tests/unit/ip/address_v4.cpp
+++ b/asio/src/tests/unit/ip/address_v4.cpp
@@ -318,7 +318,7 @@
 
 ASIO_TEST_SUITE
 (
-  "ip/address_v4",
+  ip_address_v4,
   ASIO_TEST_CASE(ip_address_v4_compile::test)
   ASIO_TEST_CASE(ip_address_v4_runtime::test)
 )
diff --git a/asio/src/tests/unit/ip/address_v4_iterator.cpp b/asio/src/tests/unit/ip/address_v4_iterator.cpp
index f891722..93ec745 100644
--- a/asio/src/tests/unit/ip/address_v4_iterator.cpp
+++ b/asio/src/tests/unit/ip/address_v4_iterator.cpp
@@ -22,6 +22,6 @@
 
 ASIO_TEST_SUITE
 (
-  "ip/address_v4_iterator",
+  ip_address_v4_iterator,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/ip/address_v4_range.cpp b/asio/src/tests/unit/ip/address_v4_range.cpp
index 0eb652d..509a97d 100644
--- a/asio/src/tests/unit/ip/address_v4_range.cpp
+++ b/asio/src/tests/unit/ip/address_v4_range.cpp
@@ -22,6 +22,6 @@
 
 ASIO_TEST_SUITE
 (
-  "ip/address_v4_range",
+  ip_address_v4_range,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/ip/address_v6.cpp b/asio/src/tests/unit/ip/address_v6.cpp
index b73f65c..03f0aec 100644
--- a/asio/src/tests/unit/ip/address_v6.cpp
+++ b/asio/src/tests/unit/ip/address_v6.cpp
@@ -403,7 +403,7 @@
 
 ASIO_TEST_SUITE
 (
-  "ip/address_v6",
+  ip_address_v6,
   ASIO_TEST_CASE(ip_address_v6_compile::test)
   ASIO_TEST_CASE(ip_address_v6_runtime::test)
 )
diff --git a/asio/src/tests/unit/ip/address_v6_iterator.cpp b/asio/src/tests/unit/ip/address_v6_iterator.cpp
index 16b040c..2047a86 100644
--- a/asio/src/tests/unit/ip/address_v6_iterator.cpp
+++ b/asio/src/tests/unit/ip/address_v6_iterator.cpp
@@ -22,6 +22,6 @@
 
 ASIO_TEST_SUITE
 (
-  "ip/address_v6_iterator",
+  ip_address_v6_iterator,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/ip/address_v6_range.cpp b/asio/src/tests/unit/ip/address_v6_range.cpp
index 7616923..3d99534 100644
--- a/asio/src/tests/unit/ip/address_v6_range.cpp
+++ b/asio/src/tests/unit/ip/address_v6_range.cpp
@@ -22,6 +22,6 @@
 
 ASIO_TEST_SUITE
 (
-  "ip/address_v6_range",
+  ip_address_v6_range,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/ip/basic_endpoint.cpp b/asio/src/tests/unit/ip/basic_endpoint.cpp
index e363ef5..8a6795c 100644
--- a/asio/src/tests/unit/ip/basic_endpoint.cpp
+++ b/asio/src/tests/unit/ip/basic_endpoint.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "ip/basic_endpoint",
+  ip_basic_endpoint,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/ip/basic_resolver.cpp b/asio/src/tests/unit/ip/basic_resolver.cpp
index afe06f5..25e80f1 100644
--- a/asio/src/tests/unit/ip/basic_resolver.cpp
+++ b/asio/src/tests/unit/ip/basic_resolver.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "ip/basic_resolver",
+  ip_basic_resolver,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/ip/basic_resolver_entry.cpp b/asio/src/tests/unit/ip/basic_resolver_entry.cpp
index 2bebc82..7eb9a72 100644
--- a/asio/src/tests/unit/ip/basic_resolver_entry.cpp
+++ b/asio/src/tests/unit/ip/basic_resolver_entry.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "ip/basic_resolver_entry",
+  ip_basic_resolver_entry,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/ip/basic_resolver_iterator.cpp b/asio/src/tests/unit/ip/basic_resolver_iterator.cpp
index 9745e9e..e779ee6 100644
--- a/asio/src/tests/unit/ip/basic_resolver_iterator.cpp
+++ b/asio/src/tests/unit/ip/basic_resolver_iterator.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "ip/basic_resolver_iterator",
+  ip_basic_resolver_iterator,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/ip/basic_resolver_query.cpp b/asio/src/tests/unit/ip/basic_resolver_query.cpp
index 5fc5be4..8fc4e5a 100644
--- a/asio/src/tests/unit/ip/basic_resolver_query.cpp
+++ b/asio/src/tests/unit/ip/basic_resolver_query.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "ip/basic_resolver_query",
+  ip_basic_resolver_query,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/ip/host_name.cpp b/asio/src/tests/unit/ip/host_name.cpp
index 64dad20..27e437f 100644
--- a/asio/src/tests/unit/ip/host_name.cpp
+++ b/asio/src/tests/unit/ip/host_name.cpp
@@ -50,6 +50,6 @@
 
 ASIO_TEST_SUITE
 (
-  "ip/host_name",
+  ip_host_name,
   ASIO_TEST_CASE(ip_host_name_compile::test)
 )
diff --git a/asio/src/tests/unit/ip/icmp.cpp b/asio/src/tests/unit/ip/icmp.cpp
index 4a4f5e8..f563082 100644
--- a/asio/src/tests/unit/ip/icmp.cpp
+++ b/asio/src/tests/unit/ip/icmp.cpp
@@ -678,7 +678,7 @@
 
 ASIO_TEST_SUITE
 (
-  "ip/icmp",
+  ip_icmp,
   ASIO_TEST_CASE(ip_icmp_socket_compile::test)
   ASIO_TEST_CASE(ip_icmp_resolver_compile::test)
 )
diff --git a/asio/src/tests/unit/ip/multicast.cpp b/asio/src/tests/unit/ip/multicast.cpp
index a3cff0b..355ffac 100644
--- a/asio/src/tests/unit/ip/multicast.cpp
+++ b/asio/src/tests/unit/ip/multicast.cpp
@@ -357,7 +357,7 @@
 
 ASIO_TEST_SUITE
 (
-  "ip/multicast",
+  ip_multicast,
   ASIO_TEST_CASE(ip_multicast_compile::test)
   ASIO_TEST_CASE(ip_multicast_runtime::test)
 )
diff --git a/asio/src/tests/unit/ip/network_v4.cpp b/asio/src/tests/unit/ip/network_v4.cpp
index 7d07ffd..02a3bc7 100644
--- a/asio/src/tests/unit/ip/network_v4.cpp
+++ b/asio/src/tests/unit/ip/network_v4.cpp
@@ -295,7 +295,7 @@
 
 ASIO_TEST_SUITE
 (
-  "ip/network_v4",
+  ip_network_v4,
   ASIO_TEST_CASE(ip_network_v4_compile::test)
   ASIO_TEST_CASE(ip_network_v4_runtime::test)
 )
diff --git a/asio/src/tests/unit/ip/network_v6.cpp b/asio/src/tests/unit/ip/network_v6.cpp
index c7e458f..e4ac277 100644
--- a/asio/src/tests/unit/ip/network_v6.cpp
+++ b/asio/src/tests/unit/ip/network_v6.cpp
@@ -219,7 +219,7 @@
 
 ASIO_TEST_SUITE
 (
-  "ip/network_v6",
+  ip_network_v6,
   ASIO_TEST_CASE(ip_network_v6_compile::test)
   ASIO_TEST_CASE(ip_network_v6_runtime::test)
 )
diff --git a/asio/src/tests/unit/ip/resolver_query_base.cpp b/asio/src/tests/unit/ip/resolver_query_base.cpp
index d9bbd32..1125678 100644
--- a/asio/src/tests/unit/ip/resolver_query_base.cpp
+++ b/asio/src/tests/unit/ip/resolver_query_base.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "ip/resolver_query_base",
+  ip_resolver_query_base,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/ip/resolver_service.cpp b/asio/src/tests/unit/ip/resolver_service.cpp
index 7b0ac2a..f3fa096 100644
--- a/asio/src/tests/unit/ip/resolver_service.cpp
+++ b/asio/src/tests/unit/ip/resolver_service.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "ip/resolver_service",
+  ip_resolver_service,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/ip/tcp.cpp b/asio/src/tests/unit/ip/tcp.cpp
index 22cee2a..2f6e1ac 100644
--- a/asio/src/tests/unit/ip/tcp.cpp
+++ b/asio/src/tests/unit/ip/tcp.cpp
@@ -1358,7 +1358,7 @@
 
 ASIO_TEST_SUITE
 (
-  "ip/tcp",
+  ip_tcp,
   ASIO_TEST_CASE(ip_tcp_compile::test)
   ASIO_TEST_CASE(ip_tcp_runtime::test)
   ASIO_TEST_CASE(ip_tcp_socket_compile::test)
diff --git a/asio/src/tests/unit/ip/udp.cpp b/asio/src/tests/unit/ip/udp.cpp
index 48f9276..4184699 100644
--- a/asio/src/tests/unit/ip/udp.cpp
+++ b/asio/src/tests/unit/ip/udp.cpp
@@ -776,7 +776,7 @@
 
 ASIO_TEST_SUITE
 (
-  "ip/udp",
+  ip_udp,
   ASIO_TEST_CASE(ip_udp_socket_compile::test)
   ASIO_TEST_CASE(ip_udp_socket_runtime::test)
   ASIO_TEST_CASE(ip_udp_resolver_compile::test)
diff --git a/asio/src/tests/unit/ip/unicast.cpp b/asio/src/tests/unit/ip/unicast.cpp
index 669e272..9fbda47 100644
--- a/asio/src/tests/unit/ip/unicast.cpp
+++ b/asio/src/tests/unit/ip/unicast.cpp
@@ -165,7 +165,7 @@
 
 ASIO_TEST_SUITE
 (
-  "ip/unicast",
+  ip_unicast,
   ASIO_TEST_CASE(ip_unicast_compile::test)
   ASIO_TEST_CASE(ip_unicast_runtime::test)
 )
diff --git a/asio/src/tests/unit/ip/v6_only.cpp b/asio/src/tests/unit/ip/v6_only.cpp
index 951540f..cd393ec 100644
--- a/asio/src/tests/unit/ip/v6_only.cpp
+++ b/asio/src/tests/unit/ip/v6_only.cpp
@@ -129,7 +129,7 @@
 
 ASIO_TEST_SUITE
 (
-  "ip/v6_only",
+  ip_v6_only,
   ASIO_TEST_CASE(ip_v6_only_compile::test)
   ASIO_TEST_CASE(ip_v6_only_runtime::test)
 )
diff --git a/asio/src/tests/unit/is_read_buffered.cpp b/asio/src/tests/unit/is_read_buffered.cpp
index 151e483..74b1b11 100644
--- a/asio/src/tests/unit/is_read_buffered.cpp
+++ b/asio/src/tests/unit/is_read_buffered.cpp
@@ -124,6 +124,6 @@
 
 ASIO_TEST_SUITE
 (
-  "is_read_buffered",
+  is_read_buffered,
   ASIO_TEST_CASE(is_read_buffered_test)
 )
diff --git a/asio/src/tests/unit/is_write_buffered.cpp b/asio/src/tests/unit/is_write_buffered.cpp
index 165f6e7..9dc855c 100644
--- a/asio/src/tests/unit/is_write_buffered.cpp
+++ b/asio/src/tests/unit/is_write_buffered.cpp
@@ -124,6 +124,6 @@
 
 ASIO_TEST_SUITE
 (
-  "is_write_buffered",
+  is_write_buffered,
   ASIO_TEST_CASE(is_write_buffered_test)
 )
diff --git a/asio/src/tests/unit/local/basic_endpoint.cpp b/asio/src/tests/unit/local/basic_endpoint.cpp
index aa76637..5153f76 100644
--- a/asio/src/tests/unit/local/basic_endpoint.cpp
+++ b/asio/src/tests/unit/local/basic_endpoint.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "local/basic_endpoint",
+  local_basic_endpoint,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/local/connect_pair.cpp b/asio/src/tests/unit/local/connect_pair.cpp
index 31a34af..53a68f5 100644
--- a/asio/src/tests/unit/local/connect_pair.cpp
+++ b/asio/src/tests/unit/local/connect_pair.cpp
@@ -71,6 +71,6 @@
 
 ASIO_TEST_SUITE
 (
-  "local/connect_pair",
+  local_connect_pair,
   ASIO_TEST_CASE(local_connect_pair_compile::test)
 )
diff --git a/asio/src/tests/unit/local/datagram_protocol.cpp b/asio/src/tests/unit/local/datagram_protocol.cpp
index f685a82..c55018b 100644
--- a/asio/src/tests/unit/local/datagram_protocol.cpp
+++ b/asio/src/tests/unit/local/datagram_protocol.cpp
@@ -231,6 +231,6 @@
 
 ASIO_TEST_SUITE
 (
-  "local/datagram_protocol",
+  local_datagram_protocol,
   ASIO_TEST_CASE(local_datagram_protocol_socket_compile::test)
 )
diff --git a/asio/src/tests/unit/local/stream_protocol.cpp b/asio/src/tests/unit/local/stream_protocol.cpp
index c22ba41..980fcd1 100644
--- a/asio/src/tests/unit/local/stream_protocol.cpp
+++ b/asio/src/tests/unit/local/stream_protocol.cpp
@@ -208,6 +208,6 @@
 
 ASIO_TEST_SUITE
 (
-  "local/stream_protocol",
+  local_stream_protocol,
   ASIO_TEST_CASE(local_stream_protocol_socket_compile::test)
 )
diff --git a/asio/src/tests/unit/main.cpp b/asio/src/tests/unit/main.cpp
new file mode 100644
index 0000000..23aeb52
--- /dev/null
+++ b/asio/src/tests/unit/main.cpp
@@ -0,0 +1,146 @@
+#include "unit_test.hpp"
+
+#include <utility>
+#include <vector>
+
+namespace {
+
+using TestSuite = std::pair<const char*, long> (*)();
+
+TestSuite test_suites[] = {
+    // basic_datagram_socket_test_suite,
+    basic_deadline_timer_test_suite,
+    // basic_raw_socket_test_suite,
+    // basic_seq_packet_socket_test_suite,
+    // basic_serial_port_test_suite,
+    // basic_signal_set_test_suite,
+    // basic_socket_acceptor_test_suite,
+    basic_streambuf_test_suite,
+    // basic_stream_socket_test_suite,
+    // basic_waitable_timer_test_suite,
+    // buffer_test_suite,
+    // buffered_read_stream_test_suite,
+    // buffered_stream_test_suite,
+    // buffered_write_stream_test_suite,
+    buffers_iterator_test_suite,
+    completion_condition_test_suite,
+    // connect_test_suite,
+    coroutine_test_suite,
+    // datagram_socket_service_test_suite,
+    deadline_timer_test_suite,
+    deadline_timer_service_test_suite,
+    error_test_suite,
+    // generic_datagram_protocol_test_suite,
+    // generic_stream_protocol_test_suite,
+    generic_basic_endpoint_test_suite,
+    // generic_raw_protocol_test_suite,
+    // generic_seq_packet_protocol_test_suite,
+    high_resolution_timer_test_suite,
+    // io_context_test_suite,
+    ip_address_v4_test_suite,
+    ip_basic_resolver_iterator_test_suite,
+    ip_address_v6_iterator_test_suite,
+    ip_host_name_test_suite,
+    // ip_network_v4_test_suite,
+    // ip_network_v6_test_suite,
+    ip_address_v4_iterator_test_suite,
+    ip_basic_resolver_entry_test_suite,
+    // ip_resolver_service_test_suite,
+    // ip_unicast_test_suite,
+    ip_basic_endpoint_test_suite,
+    // ip_multicast_test_suite,
+    ip_address_v6_range_test_suite,
+    // ip_basic_resolver_test_suite,
+    // ip_icmp_test_suite,
+    // ip_udp_test_suite,
+    // ip_address_test_suite,
+    // ip_tcp_test_suite,
+    ip_basic_resolver_query_test_suite,
+    // ip_address_v6_test_suite,
+    // ip_v6_only_test_suite,
+    ip_resolver_query_base_test_suite,
+    ip_address_v4_range_test_suite,
+    // is_read_buffered_test_suite,
+    // is_write_buffered_test_suite,
+    // local_connect_pair_test_suite,
+    // local_datagram_protocol_test_suite,
+    // local_stream_protocol_test_suite,
+    local_basic_endpoint_test_suite,
+    placeholders_test_suite,
+    // posix_basic_descriptor_test_suite,
+    // posix_basic_stream_descriptor_test_suite,
+    // posix_stream_descriptor_test_suite,
+    // posix_stream_descriptor_service_test_suite,
+    posix_descriptor_base_test_suite,
+    // raw_socket_service_test_suite,
+    // read_at_test_suite,
+    // read_test_suite,
+    // read_until_test_suite,
+    // seq_packet_socket_service_test_suite,
+    // serial_port_base_test_suite,
+    // serial_port_test_suite,
+    // serial_port_service_test_suite,
+    // signal_set_test_suite,
+    // signal_set_service_test_suite,
+    // socket_acceptor_service_test_suite,
+    // socket_base_test_suite,
+    // ssl_context_test_suite,
+    // ssl_rfc2818_verification_test_suite,
+    ssl_stream_base_test_suite,
+    // ssl_stream_test_suite,
+    // ssl_context_base_test_suite,
+    // steady_timer_test_suite,
+    // strand_test_suite,
+    streambuf_test_suite,
+    // stream_socket_service_test_suite,
+    // system_timer_test_suite,
+    thread_test_suite,
+    time_traits_test_suite,
+    waitable_timer_service_test_suite,
+    wait_traits_test_suite,
+    // windows_basic_object_handle_test_suite,
+    // windows_object_handle_service_test_suite,
+    // windows_basic_stream_handle_test_suite,
+    // windows_random_access_handle_service_test_suite,
+    // windows_random_access_handle_test_suite,
+    // windows_basic_random_access_handle_test_suite,
+    // windows_stream_handle_test_suite,
+    // windows_basic_handle_test_suite,
+    // windows_stream_handle_service_test_suite,
+    // windows_overlapped_ptr_test_suite,
+    // windows_object_handle_test_suite,
+    // write_at_test_suite,
+    // write_test_suite,
+};
+
+}  // namespace
+
+int main() {
+    long failing_tests = 0;
+    std::vector<std::pair<const char*, long>> failing_suites;
+    for (const auto& test_suite : test_suites) {
+        auto outcome = test_suite();
+        const char* name = outcome.first;
+        long failures = outcome.second;
+        if (failures > 0)
+            failing_suites.push_back(std::make_pair(name, failures));
+        failing_tests += failures;
+    }
+
+    ASIO_TEST_IOSTREAM << std::endl << std::endl;
+    ASIO_TEST_IOSTREAM << "----------------------------------------" << std::endl;
+    if (failing_tests == 0) {
+        ASIO_TEST_IOSTREAM << "ASIO: All tests passed!" << std::endl;
+        return 0;
+    }
+
+    ASIO_TEST_IOSTREAM << "ASIO: There were " << failing_tests;
+    ASIO_TEST_IOSTREAM << " test failures total:" << std::endl;
+    for (const auto& failing_suite : failing_suites) {
+        const char* name = failing_suite.first;
+        long failures = failing_suite.second;
+        ASIO_TEST_IOSTREAM << "    " << name;
+        ASIO_TEST_IOSTREAM << " (" << failures << " failures)" << std::endl;
+    }
+    return -1;
+}
diff --git a/asio/src/tests/unit/packaged_task.cpp b/asio/src/tests/unit/packaged_task.cpp
index bb44c77..542b75f 100644
--- a/asio/src/tests/unit/packaged_task.cpp
+++ b/asio/src/tests/unit/packaged_task.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "packaged_task",
+  packaged_task,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/placeholders.cpp b/asio/src/tests/unit/placeholders.cpp
index 54cf62f..47d6410 100644
--- a/asio/src/tests/unit/placeholders.cpp
+++ b/asio/src/tests/unit/placeholders.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "placeholders",
+  placeholders,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/posix/basic_descriptor.cpp b/asio/src/tests/unit/posix/basic_descriptor.cpp
index c193c0f..8eb7540 100644
--- a/asio/src/tests/unit/posix/basic_descriptor.cpp
+++ b/asio/src/tests/unit/posix/basic_descriptor.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "posix/basic_descriptor",
+  posix_basic_descriptor,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/posix/basic_stream_descriptor.cpp b/asio/src/tests/unit/posix/basic_stream_descriptor.cpp
index dd2f31d..747a763 100644
--- a/asio/src/tests/unit/posix/basic_stream_descriptor.cpp
+++ b/asio/src/tests/unit/posix/basic_stream_descriptor.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "posix/basic_stream_descriptor",
+  posix_basic_stream_descriptor,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/posix/descriptor.cpp b/asio/src/tests/unit/posix/descriptor.cpp
index 6a52e01..17b53d5 100644
--- a/asio/src/tests/unit/posix/descriptor.cpp
+++ b/asio/src/tests/unit/posix/descriptor.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "posix/descriptor",
+  posix_descriptor,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/posix/descriptor_base.cpp b/asio/src/tests/unit/posix/descriptor_base.cpp
index 6dc61f8..5616300 100644
--- a/asio/src/tests/unit/posix/descriptor_base.cpp
+++ b/asio/src/tests/unit/posix/descriptor_base.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "posix/descriptor_base",
+  posix_descriptor_base,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/posix/stream_descriptor.cpp b/asio/src/tests/unit/posix/stream_descriptor.cpp
index 165db89..bebd414 100644
--- a/asio/src/tests/unit/posix/stream_descriptor.cpp
+++ b/asio/src/tests/unit/posix/stream_descriptor.cpp
@@ -180,6 +180,6 @@
 
 ASIO_TEST_SUITE
 (
-  "posix/stream_descriptor",
+  posix_stream_descriptor,
   ASIO_TEST_CASE(posix_stream_descriptor_compile::test)
 )
diff --git a/asio/src/tests/unit/posix/stream_descriptor_service.cpp b/asio/src/tests/unit/posix/stream_descriptor_service.cpp
index be2e60e..265c80f 100644
--- a/asio/src/tests/unit/posix/stream_descriptor_service.cpp
+++ b/asio/src/tests/unit/posix/stream_descriptor_service.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "posix/stream_descriptor_service",
+  posix_stream_descriptor_service,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/post.cpp b/asio/src/tests/unit/post.cpp
index caf8ad5..69bbfc0 100644
--- a/asio/src/tests/unit/post.cpp
+++ b/asio/src/tests/unit/post.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "post",
+  post,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/raw_socket_service.cpp b/asio/src/tests/unit/raw_socket_service.cpp
index c7b736f..e5276e9 100644
--- a/asio/src/tests/unit/raw_socket_service.cpp
+++ b/asio/src/tests/unit/raw_socket_service.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "raw_socket_service",
+  raw_socket_service,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/read.cpp b/asio/src/tests/unit/read.cpp
index 077c922..9bddf61 100644
--- a/asio/src/tests/unit/read.cpp
+++ b/asio/src/tests/unit/read.cpp
@@ -40,6 +40,8 @@
 
 using namespace std; // For memcmp, memcpy and memset.
 
+namespace {
+
 class test_stream
 {
 public:
@@ -3897,9 +3899,11 @@
   ASIO_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
 }
 
+}  // namespace
+
 ASIO_TEST_SUITE
 (
-  "read",
+  read,
   ASIO_TEST_CASE(test_2_arg_zero_buffers_read)
   ASIO_TEST_CASE(test_2_arg_mutable_buffer_read)
   ASIO_TEST_CASE(test_2_arg_vector_buffers_read)
diff --git a/asio/src/tests/unit/read_at.cpp b/asio/src/tests/unit/read_at.cpp
index 5b2f5eb..e02464a 100644
--- a/asio/src/tests/unit/read_at.cpp
+++ b/asio/src/tests/unit/read_at.cpp
@@ -39,6 +39,8 @@
 
 using namespace std; // For memcmp, memcpy and memset.
 
+namespace {
+
 class test_random_access_device
 {
 public:
@@ -7465,9 +7467,11 @@
   ASIO_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
 }
 
+}  // namespace
+
 ASIO_TEST_SUITE
 (
-  "read_at",
+  read_at,
   ASIO_TEST_CASE(test_3_arg_mutable_buffer_read_at)
   ASIO_TEST_CASE(test_3_arg_vector_buffers_read_at)
   ASIO_TEST_CASE(test_3_arg_streambuf_read_at)
diff --git a/asio/src/tests/unit/read_until.cpp b/asio/src/tests/unit/read_until.cpp
index 782ac2f..83edfd9 100644
--- a/asio/src/tests/unit/read_until.cpp
+++ b/asio/src/tests/unit/read_until.cpp
@@ -877,7 +877,7 @@
 
 ASIO_TEST_SUITE
 (
-  "read_until",
+  read_until,
   ASIO_TEST_CASE(test_char_read_until)
   ASIO_TEST_CASE(test_string_read_until)
   ASIO_TEST_CASE(test_match_condition_read_until)
diff --git a/asio/src/tests/unit/seq_packet_socket_service.cpp b/asio/src/tests/unit/seq_packet_socket_service.cpp
index fc2d73c..d650213 100644
--- a/asio/src/tests/unit/seq_packet_socket_service.cpp
+++ b/asio/src/tests/unit/seq_packet_socket_service.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "seq_packet_socket_service",
+  seq_packet_socket_service,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/serial_port.cpp b/asio/src/tests/unit/serial_port.cpp
index ff6e2dc..c8ccd58 100644
--- a/asio/src/tests/unit/serial_port.cpp
+++ b/asio/src/tests/unit/serial_port.cpp
@@ -166,6 +166,6 @@
 
 ASIO_TEST_SUITE
 (
-  "serial_port",
+  serial_port,
   ASIO_TEST_CASE(serial_port_compile::test)
 )
diff --git a/asio/src/tests/unit/serial_port_base.cpp b/asio/src/tests/unit/serial_port_base.cpp
index d05e7bb..c9fb25e 100644
--- a/asio/src/tests/unit/serial_port_base.cpp
+++ b/asio/src/tests/unit/serial_port_base.cpp
@@ -94,6 +94,6 @@
 
 ASIO_TEST_SUITE
 (
-  "serial_port_base",
+  serial_port_base,
   ASIO_TEST_CASE(serial_port_base_compile::test)
 )
diff --git a/asio/src/tests/unit/serial_port_service.cpp b/asio/src/tests/unit/serial_port_service.cpp
index c0c5961..8e96b2d 100644
--- a/asio/src/tests/unit/serial_port_service.cpp
+++ b/asio/src/tests/unit/serial_port_service.cpp
@@ -21,6 +21,6 @@
 
 ASIO_TEST_SUITE
 (
-  "serial_port_service",
+  serial_port_service,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/signal_set.cpp b/asio/src/tests/unit/signal_set.cpp
index 7118bb9..faa42bb 100644
--- a/asio/src/tests/unit/signal_set.cpp
+++ b/asio/src/tests/unit/signal_set.cpp
@@ -92,6 +92,6 @@
 
 ASIO_TEST_SUITE
 (
-  "signal_set",
+  signal_set,
   ASIO_TEST_CASE(signal_set_compile::test)
 )
diff --git a/asio/src/tests/unit/signal_set_service.cpp b/asio/src/tests/unit/signal_set_service.cpp
index 1dd2a2c..1972c77 100644
--- a/asio/src/tests/unit/signal_set_service.cpp
+++ b/asio/src/tests/unit/signal_set_service.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "signal_set_service",
+  signal_set_service,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/socket_acceptor_service.cpp b/asio/src/tests/unit/socket_acceptor_service.cpp
index 7722186..c43a2d8 100644
--- a/asio/src/tests/unit/socket_acceptor_service.cpp
+++ b/asio/src/tests/unit/socket_acceptor_service.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "socket_acceptor_service",
+  socket_acceptor_service,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/socket_base.cpp b/asio/src/tests/unit/socket_base.cpp
index f7170ac..f4e36a8 100644
--- a/asio/src/tests/unit/socket_base.cpp
+++ b/asio/src/tests/unit/socket_base.cpp
@@ -633,7 +633,7 @@
 
 ASIO_TEST_SUITE
 (
-  "socket_base",
+  socket_base,
   ASIO_TEST_CASE(socket_base_compile::test)
   ASIO_TEST_CASE(socket_base_runtime::test)
 )
diff --git a/asio/src/tests/unit/ssl/context.cpp b/asio/src/tests/unit/ssl/context.cpp
index 27d63d5..2a4a4f2 100644
--- a/asio/src/tests/unit/ssl/context.cpp
+++ b/asio/src/tests/unit/ssl/context.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "ssl/context",
+  ssl_context,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/ssl/context_base.cpp b/asio/src/tests/unit/ssl/context_base.cpp
index 19ef574..426d471 100644
--- a/asio/src/tests/unit/ssl/context_base.cpp
+++ b/asio/src/tests/unit/ssl/context_base.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "ssl/context_base",
+  ssl_context_base,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/ssl/rfc2818_verification.cpp b/asio/src/tests/unit/ssl/rfc2818_verification.cpp
index 15e0b5e..32da399 100644
--- a/asio/src/tests/unit/ssl/rfc2818_verification.cpp
+++ b/asio/src/tests/unit/ssl/rfc2818_verification.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "ssl/rfc2818_verification",
+  ssl_rfc2818_verification,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/ssl/stream.cpp b/asio/src/tests/unit/ssl/stream.cpp
index 542949e..ee9520d 100644
--- a/asio/src/tests/unit/ssl/stream.cpp
+++ b/asio/src/tests/unit/ssl/stream.cpp
@@ -194,6 +194,6 @@
 
 ASIO_TEST_SUITE
 (
-  "ssl/stream",
+  ssl_stream,
   ASIO_TEST_CASE(ssl_stream_compile::test)
 )
diff --git a/asio/src/tests/unit/ssl/stream_base.cpp b/asio/src/tests/unit/ssl/stream_base.cpp
index 4dbc9e3..cc875b3 100644
--- a/asio/src/tests/unit/ssl/stream_base.cpp
+++ b/asio/src/tests/unit/ssl/stream_base.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "ssl/stream_base",
+  ssl_stream_base,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/steady_timer.cpp b/asio/src/tests/unit/steady_timer.cpp
index 18d4a81..933900a 100644
--- a/asio/src/tests/unit/steady_timer.cpp
+++ b/asio/src/tests/unit/steady_timer.cpp
@@ -25,6 +25,6 @@
 
 ASIO_TEST_SUITE
 (
-  "steady_timer",
+  steady_timer,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/strand.cpp b/asio/src/tests/unit/strand.cpp
index 02a0f7d..6cc41e2 100644
--- a/asio/src/tests/unit/strand.cpp
+++ b/asio/src/tests/unit/strand.cpp
@@ -51,6 +51,8 @@
 namespace chronons = asio::chrono;
 #endif // defined(ASIO_HAS_BOOST_DATE_TIME)
 
+namespace {
+
 void increment(int* count)
 {
   ++(*count);
@@ -217,8 +219,10 @@
   ASIO_CHECK(count == 0);
 }
 
+}  //namespace
+
 ASIO_TEST_SUITE
 (
-  "strand",
+  strand,
   ASIO_TEST_CASE(strand_test)
 )
diff --git a/asio/src/tests/unit/stream_socket_service.cpp b/asio/src/tests/unit/stream_socket_service.cpp
index 03bbbf2..e76095e 100644
--- a/asio/src/tests/unit/stream_socket_service.cpp
+++ b/asio/src/tests/unit/stream_socket_service.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "stream_socket_service",
+  stream_socket_service,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/streambuf.cpp b/asio/src/tests/unit/streambuf.cpp
index 5e10e72..1a12335 100644
--- a/asio/src/tests/unit/streambuf.cpp
+++ b/asio/src/tests/unit/streambuf.cpp
@@ -57,6 +57,6 @@
 
 ASIO_TEST_SUITE
 (
-  "streambuf",
+  streambuf,
   ASIO_TEST_CASE(streambuf_test)
 )
diff --git a/asio/src/tests/unit/system_timer.cpp b/asio/src/tests/unit/system_timer.cpp
index 3f77a2e..6372a24 100644
--- a/asio/src/tests/unit/system_timer.cpp
+++ b/asio/src/tests/unit/system_timer.cpp
@@ -41,6 +41,8 @@
 namespace bindns = std;
 #endif // defined(ASIO_HAS_BOOST_BIND)
 
+namespace {
+
 void increment(int* count)
 {
   ++(*count);
@@ -382,9 +384,11 @@
 #endif // defined(ASIO_HAS_MOVE)
 }
 
+}  // namespace
+
 ASIO_TEST_SUITE
 (
-  "system_timer",
+  system_timer,
   ASIO_TEST_CASE(system_timer_test)
   ASIO_TEST_CASE(system_timer_cancel_test)
   ASIO_TEST_CASE(system_timer_custom_allocation_test)
@@ -394,7 +398,7 @@
 #else // defined(ASIO_HAS_STD_CHRONO)
 ASIO_TEST_SUITE
 (
-  "system_timer",
+  system_timer,
   ASIO_TEST_CASE(null_test)
 )
 #endif // defined(ASIO_HAS_STD_CHRONO)
diff --git a/asio/src/tests/unit/thread.cpp b/asio/src/tests/unit/thread.cpp
index 4096c9a..74ea95f 100644
--- a/asio/src/tests/unit/thread.cpp
+++ b/asio/src/tests/unit/thread.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "thread",
+  thread,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/time_traits.cpp b/asio/src/tests/unit/time_traits.cpp
index 64a35a1..fc6b1bc 100644
--- a/asio/src/tests/unit/time_traits.cpp
+++ b/asio/src/tests/unit/time_traits.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "time_traits",
+  time_traits,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/unit_test.hpp b/asio/src/tests/unit/unit_test.hpp
index b74c3d4..caf6518 100644
--- a/asio/src/tests/unit/unit_test.hpp
+++ b/asio/src/tests/unit/unit_test.hpp
@@ -13,6 +13,7 @@
 
 #include "asio/detail/config.hpp"
 #include <iostream>
+#include <utility>
 #include "asio/detail/atomic_count.hpp"
 
 #if defined(__sun)
@@ -59,11 +60,11 @@
 inline void begin_test_suite(const char* name)
 {
   asio::detail::test_name();
-  asio::detail::test_errors();
+  asio::detail::test_errors() = 0;
   ASIO_TEST_IOSTREAM << name << " test suite begins" << std::endl;
 }
 
-inline int end_test_suite(const char* name)
+inline long end_test_suite(const char* name)
 {
   ASIO_TEST_IOSTREAM << name << " test suite ends" << std::endl;
   ASIO_TEST_IOSTREAM << "\n*** ";
@@ -75,7 +76,7 @@
   else
     ASIO_TEST_IOSTREAM << errors << " errors detected." << std::endl;
   ASIO_TEST_IOSTREAM << std::endl;
-  return errors == 0 ? 0 : 1;
+  return errors;
 }
 
 template <void (*Test)()>
@@ -142,11 +143,11 @@
   } while (0)
 
 #define ASIO_TEST_SUITE(name, tests) \
-  int main() \
+  std::pair<const char*, long> name ## _test_suite()  \
   { \
-    asio::detail::begin_test_suite(name); \
+    asio::detail::begin_test_suite(#name); \
     tests \
-    return asio::detail::end_test_suite(name); \
+    return std::make_pair(#name, asio::detail::end_test_suite(#name)); \
   }
 
 #define ASIO_TEST_CASE(test) \
@@ -159,6 +160,110 @@
 {
 }
 
+std::pair<const char*, long> basic_datagram_socket_test_suite();
+std::pair<const char*, long> basic_deadline_timer_test_suite();
+std::pair<const char*, long> basic_raw_socket_test_suite();
+std::pair<const char*, long> basic_seq_packet_socket_test_suite();
+std::pair<const char*, long> basic_serial_port_test_suite();
+std::pair<const char*, long> basic_signal_set_test_suite();
+std::pair<const char*, long> basic_socket_acceptor_test_suite();
+std::pair<const char*, long> basic_streambuf_test_suite();
+std::pair<const char*, long> basic_stream_socket_test_suite();
+std::pair<const char*, long> basic_waitable_timer_test_suite();
+std::pair<const char*, long> buffer_test_suite();
+std::pair<const char*, long> buffered_read_stream_test_suite();
+std::pair<const char*, long> buffered_stream_test_suite();
+std::pair<const char*, long> buffered_write_stream_test_suite();
+std::pair<const char*, long> buffers_iterator_test_suite();
+std::pair<const char*, long> completion_condition_test_suite();
+std::pair<const char*, long> connect_test_suite();
+std::pair<const char*, long> coroutine_test_suite();
+std::pair<const char*, long> datagram_socket_service_test_suite();
+std::pair<const char*, long> deadline_timer_test_suite();
+std::pair<const char*, long> deadline_timer_service_test_suite();
+std::pair<const char*, long> error_test_suite();
+std::pair<const char*, long> generic_datagram_protocol_test_suite();
+std::pair<const char*, long> generic_stream_protocol_test_suite();
+std::pair<const char*, long> generic_basic_endpoint_test_suite();
+std::pair<const char*, long> generic_raw_protocol_test_suite();
+std::pair<const char*, long> generic_seq_packet_protocol_test_suite();
+std::pair<const char*, long> high_resolution_timer_test_suite();
+std::pair<const char*, long> io_context_test_suite();
+std::pair<const char*, long> ip_address_v4_test_suite();
+std::pair<const char*, long> ip_basic_resolver_iterator_test_suite();
+std::pair<const char*, long> ip_address_v6_iterator_test_suite();
+std::pair<const char*, long> ip_host_name_test_suite();
+std::pair<const char*, long> ip_network_v4_test_suite();
+std::pair<const char*, long> ip_network_v6_test_suite();
+std::pair<const char*, long> ip_address_v4_iterator_test_suite();
+std::pair<const char*, long> ip_basic_resolver_entry_test_suite();
+std::pair<const char*, long> ip_resolver_service_test_suite();
+std::pair<const char*, long> ip_unicast_test_suite();
+std::pair<const char*, long> ip_basic_endpoint_test_suite();
+std::pair<const char*, long> ip_multicast_test_suite();
+std::pair<const char*, long> ip_address_v6_range_test_suite();
+std::pair<const char*, long> ip_basic_resolver_test_suite();
+std::pair<const char*, long> ip_icmp_test_suite();
+std::pair<const char*, long> ip_udp_test_suite();
+std::pair<const char*, long> ip_address_test_suite();
+std::pair<const char*, long> ip_tcp_test_suite();
+std::pair<const char*, long> ip_basic_resolver_query_test_suite();
+std::pair<const char*, long> ip_address_v6_test_suite();
+std::pair<const char*, long> ip_v6_only_test_suite();
+std::pair<const char*, long> ip_resolver_query_base_test_suite();
+std::pair<const char*, long> ip_address_v4_range_test_suite();
+std::pair<const char*, long> is_read_buffered_test_suite();
+std::pair<const char*, long> is_write_buffered_test_suite();
+std::pair<const char*, long> local_connect_pair_test_suite();
+std::pair<const char*, long> local_datagram_protocol_test_suite();
+std::pair<const char*, long> local_stream_protocol_test_suite();
+std::pair<const char*, long> local_basic_endpoint_test_suite();
+std::pair<const char*, long> placeholders_test_suite();
+std::pair<const char*, long> posix_basic_descriptor_test_suite();
+std::pair<const char*, long> posix_basic_stream_descriptor_test_suite();
+std::pair<const char*, long> posix_stream_descriptor_test_suite();
+std::pair<const char*, long> posix_stream_descriptor_service_test_suite();
+std::pair<const char*, long> posix_descriptor_base_test_suite();
+std::pair<const char*, long> raw_socket_service_test_suite();
+std::pair<const char*, long> read_at_test_suite();
+std::pair<const char*, long> read_test_suite();
+std::pair<const char*, long> read_until_test_suite();
+std::pair<const char*, long> seq_packet_socket_service_test_suite();
+std::pair<const char*, long> serial_port_base_test_suite();
+std::pair<const char*, long> serial_port_test_suite();
+std::pair<const char*, long> serial_port_service_test_suite();
+std::pair<const char*, long> signal_set_test_suite();
+std::pair<const char*, long> signal_set_service_test_suite();
+std::pair<const char*, long> socket_acceptor_service_test_suite();
+std::pair<const char*, long> socket_base_test_suite();
+std::pair<const char*, long> ssl_context_test_suite();
+std::pair<const char*, long> ssl_rfc2818_verification_test_suite();
+std::pair<const char*, long> ssl_stream_base_test_suite();
+std::pair<const char*, long> ssl_stream_test_suite();
+std::pair<const char*, long> ssl_context_base_test_suite();
+std::pair<const char*, long> steady_timer_test_suite();
+std::pair<const char*, long> strand_test_suite();
+std::pair<const char*, long> streambuf_test_suite();
+std::pair<const char*, long> stream_socket_service_test_suite();
+std::pair<const char*, long> system_timer_test_suite();
+std::pair<const char*, long> thread_test_suite();
+std::pair<const char*, long> time_traits_test_suite();
+std::pair<const char*, long> waitable_timer_service_test_suite();
+std::pair<const char*, long> wait_traits_test_suite();
+std::pair<const char*, long> windows_basic_object_handle_test_suite();
+std::pair<const char*, long> windows_object_handle_service_test_suite();
+std::pair<const char*, long> windows_basic_stream_handle_test_suite();
+std::pair<const char*, long> windows_random_access_handle_service_test_suite();
+std::pair<const char*, long> windows_random_access_handle_test_suite();
+std::pair<const char*, long> windows_basic_random_access_handle_test_suite();
+std::pair<const char*, long> windows_stream_handle_test_suite();
+std::pair<const char*, long> windows_basic_handle_test_suite();
+std::pair<const char*, long> windows_stream_handle_service_test_suite();
+std::pair<const char*, long> windows_overlapped_ptr_test_suite();
+std::pair<const char*, long> windows_object_handle_test_suite();
+std::pair<const char*, long> write_at_test_suite();
+std::pair<const char*, long> write_test_suite();
+
 #if defined(__GNUC__) && defined(_AIX)
 
 // AIX needs this symbol defined in asio, even if it doesn't do anything.
diff --git a/asio/src/tests/unit/use_future.cpp b/asio/src/tests/unit/use_future.cpp
index bc6e3b8..430a7bc 100644
--- a/asio/src/tests/unit/use_future.cpp
+++ b/asio/src/tests/unit/use_future.cpp
@@ -24,6 +24,8 @@
 #include "archetypes/async_ops.hpp"
 #include "archetypes/deprecated_async_ops.hpp"
 
+namespace {
+
 void use_future_0_test()
 {
   using asio::use_future;
@@ -1314,9 +1316,11 @@
 #endif // !defined(ASIO_NO_DEPRECATED)
 }
 
+} // namespace
+
 ASIO_TEST_SUITE
 (
-  "use_future",
+  use_future,
   ASIO_TEST_CASE(use_future_0_test)
   ASIO_TEST_CASE(use_future_1_test)
   ASIO_TEST_CASE(use_future_2_test)
@@ -1339,7 +1343,7 @@
 
 ASIO_TEST_SUITE
 (
-  "use_future",
+  use_future,
   ASIO_TEST_CASE(null_test)
 )
 
diff --git a/asio/src/tests/unit/uses_executor.cpp b/asio/src/tests/unit/uses_executor.cpp
index cb1e291..03b0f69 100644
--- a/asio/src/tests/unit/uses_executor.cpp
+++ b/asio/src/tests/unit/uses_executor.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "uses_executor",
+  uses_executor,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/wait_traits.cpp b/asio/src/tests/unit/wait_traits.cpp
index eed0161..e09bd26 100644
--- a/asio/src/tests/unit/wait_traits.cpp
+++ b/asio/src/tests/unit/wait_traits.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "wait_traits",
+  wait_traits,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/waitable_timer_service.cpp b/asio/src/tests/unit/waitable_timer_service.cpp
index 3aa530a..65f0d52 100644
--- a/asio/src/tests/unit/waitable_timer_service.cpp
+++ b/asio/src/tests/unit/waitable_timer_service.cpp
@@ -20,6 +20,6 @@
 
 ASIO_TEST_SUITE
 (
-  "waitable_timer_service",
+  waitable_timer_service,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/windows/basic_handle.cpp b/asio/src/tests/unit/windows/basic_handle.cpp
index 572699e..c0460e9 100644
--- a/asio/src/tests/unit/windows/basic_handle.cpp
+++ b/asio/src/tests/unit/windows/basic_handle.cpp
@@ -21,6 +21,6 @@
 
 ASIO_TEST_SUITE
 (
-  "windows/basic_handle",
+  windows_basic_handle,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/windows/basic_object_handle.cpp b/asio/src/tests/unit/windows/basic_object_handle.cpp
index 4c27e14..f5af4a2 100644
--- a/asio/src/tests/unit/windows/basic_object_handle.cpp
+++ b/asio/src/tests/unit/windows/basic_object_handle.cpp
@@ -21,6 +21,6 @@
 
 ASIO_TEST_SUITE
 (
-  "windows/basic_object_handle",
+  windows_basic_object_handle,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/windows/basic_random_access_handle.cpp b/asio/src/tests/unit/windows/basic_random_access_handle.cpp
index 720cf76..610a14b 100644
--- a/asio/src/tests/unit/windows/basic_random_access_handle.cpp
+++ b/asio/src/tests/unit/windows/basic_random_access_handle.cpp
@@ -21,6 +21,6 @@
 
 ASIO_TEST_SUITE
 (
-  "windows/basic_random_access_handle",
+  windows_basic_random_access_handle,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/windows/basic_stream_handle.cpp b/asio/src/tests/unit/windows/basic_stream_handle.cpp
index 2151daf..d58c25e 100644
--- a/asio/src/tests/unit/windows/basic_stream_handle.cpp
+++ b/asio/src/tests/unit/windows/basic_stream_handle.cpp
@@ -21,6 +21,6 @@
 
 ASIO_TEST_SUITE
 (
-  "windows/basic_stream_handle",
+  windows_basic_stream_handle,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/windows/object_handle.cpp b/asio/src/tests/unit/windows/object_handle.cpp
index 32a836e..254cd16 100644
--- a/asio/src/tests/unit/windows/object_handle.cpp
+++ b/asio/src/tests/unit/windows/object_handle.cpp
@@ -121,6 +121,6 @@
 
 ASIO_TEST_SUITE
 (
-  "windows/object_handle",
+  windows_object_handle,
   ASIO_TEST_CASE(windows_object_handle_compile::test)
 )
diff --git a/asio/src/tests/unit/windows/object_handle_service.cpp b/asio/src/tests/unit/windows/object_handle_service.cpp
index 56ff1c3..580f483 100644
--- a/asio/src/tests/unit/windows/object_handle_service.cpp
+++ b/asio/src/tests/unit/windows/object_handle_service.cpp
@@ -21,6 +21,6 @@
 
 ASIO_TEST_SUITE
 (
-  "windows/object_handle_service",
+  windows_object_handle_service,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/windows/overlapped_ptr.cpp b/asio/src/tests/unit/windows/overlapped_ptr.cpp
index 261ece6..dd8992e 100644
--- a/asio/src/tests/unit/windows/overlapped_ptr.cpp
+++ b/asio/src/tests/unit/windows/overlapped_ptr.cpp
@@ -90,6 +90,6 @@
 
 ASIO_TEST_SUITE
 (
-  "windows/overlapped_ptr",
+  windows_overlapped_ptr,
   ASIO_TEST_CASE(windows_overlapped_ptr_compile::test)
 )
diff --git a/asio/src/tests/unit/windows/random_access_handle.cpp b/asio/src/tests/unit/windows/random_access_handle.cpp
index fbd8820..c36d49f 100644
--- a/asio/src/tests/unit/windows/random_access_handle.cpp
+++ b/asio/src/tests/unit/windows/random_access_handle.cpp
@@ -146,6 +146,6 @@
 
 ASIO_TEST_SUITE
 (
-  "windows/random_access_handle",
+  windows_random_access_handle,
   ASIO_TEST_CASE(windows_random_access_handle_compile::test)
 )
diff --git a/asio/src/tests/unit/windows/random_access_handle_service.cpp b/asio/src/tests/unit/windows/random_access_handle_service.cpp
index 0895864..0d52139 100644
--- a/asio/src/tests/unit/windows/random_access_handle_service.cpp
+++ b/asio/src/tests/unit/windows/random_access_handle_service.cpp
@@ -21,6 +21,6 @@
 
 ASIO_TEST_SUITE
 (
-  "windows/random_access_handle_service",
+  windows_random_access_handle_service,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/windows/stream_handle.cpp b/asio/src/tests/unit/windows/stream_handle.cpp
index 499ed35..459c88e 100644
--- a/asio/src/tests/unit/windows/stream_handle.cpp
+++ b/asio/src/tests/unit/windows/stream_handle.cpp
@@ -139,6 +139,6 @@
 
 ASIO_TEST_SUITE
 (
-  "windows/stream_handle",
+  windows_stream_handle,
   ASIO_TEST_CASE(windows_stream_handle_compile::test)
 )
diff --git a/asio/src/tests/unit/windows/stream_handle_service.cpp b/asio/src/tests/unit/windows/stream_handle_service.cpp
index 4281ee0..c0b8627 100644
--- a/asio/src/tests/unit/windows/stream_handle_service.cpp
+++ b/asio/src/tests/unit/windows/stream_handle_service.cpp
@@ -21,6 +21,6 @@
 
 ASIO_TEST_SUITE
 (
-  "windows/stream_handle_service",
+  windows_stream_handle_service,
   ASIO_TEST_CASE(null_test)
 )
diff --git a/asio/src/tests/unit/write.cpp b/asio/src/tests/unit/write.cpp
index a60ee11..3c854ed 100644
--- a/asio/src/tests/unit/write.cpp
+++ b/asio/src/tests/unit/write.cpp
@@ -40,6 +40,8 @@
 
 using namespace std; // For memcmp, memcpy and memset.
 
+namespace {
+
 class test_stream
 {
 public:
@@ -3890,9 +3892,11 @@
   ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
 }
 
+}  // namespace
+
 ASIO_TEST_SUITE
 (
-  "write",
+  write,
   ASIO_TEST_CASE(test_2_arg_zero_buffers_write)
   ASIO_TEST_CASE(test_2_arg_const_buffer_write)
   ASIO_TEST_CASE(test_2_arg_mutable_buffer_write)
diff --git a/asio/src/tests/unit/write_at.cpp b/asio/src/tests/unit/write_at.cpp
index a8e55e8..4ffbc77 100644
--- a/asio/src/tests/unit/write_at.cpp
+++ b/asio/src/tests/unit/write_at.cpp
@@ -39,6 +39,8 @@
 
 using namespace std; // For memcmp, memcpy and memset.
 
+namespace {
+
 class test_random_access_device
 {
 public:
@@ -7524,9 +7526,11 @@
   ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 }
 
+}  // namespace
+
 ASIO_TEST_SUITE
 (
-  "write_at",
+  write_at,
   ASIO_TEST_CASE(test_3_arg_const_buffer_write_at)
   ASIO_TEST_CASE(test_3_arg_mutable_buffer_write_at)
   ASIO_TEST_CASE(test_3_arg_vector_buffers_write_at)