The AI_NUMERICSERV constant is missing from old Darwin systems, so only use it if it's supported.
* include/experimental/internet [AI_NUMERICSERV] (resolver_base::numeric_service): Define conditionally. * testsuite/experimental/net/internet/resolver/base.cc: Test it conditionally. * testsuite/experimental/net/internet/resolver/ops/lookup.cc: Likewise. Tested x86_64-linux, committed to trunk.
commit 263a9a4d85e1c2cbfc7fad5585d98dd133c874b1 Author: Jonathan Wakely <jwak...@redhat.com> Date: Thu Jan 10 13:18:17 2019 +0000 Check AI_NUMERICSERV is defined before using it The AI_NUMERICSERV constant is missing from old Darwin systems, so only use it if it's supported. * include/experimental/internet [AI_NUMERICSERV] (resolver_base::numeric_service): Define conditionally. * testsuite/experimental/net/internet/resolver/base.cc: Test it conditionally. * testsuite/experimental/net/internet/resolver/ops/lookup.cc: Likewise. diff --git a/libstdc++-v3/include/experimental/internet b/libstdc++-v3/include/experimental/internet index cd0eee29585..07c62e697cd 100644 --- a/libstdc++-v3/include/experimental/internet +++ b/libstdc++-v3/include/experimental/internet @@ -1629,7 +1629,9 @@ namespace ip __flags_passive = AI_PASSIVE, __flags_canonical_name = AI_CANONNAME, __flags_numeric_host = AI_NUMERICHOST, +#ifdef AI_NUMERICSERV __flags_numeric_service = AI_NUMERICSERV, +#endif __flags_v4_mapped = AI_V4MAPPED, __flags_all_matching = AI_ALL, __flags_address_configured = AI_ADDRCONFIG @@ -1637,7 +1639,9 @@ namespace ip static constexpr flags passive = __flags_passive; static constexpr flags canonical_name = __flags_canonical_name; static constexpr flags numeric_host = __flags_numeric_host; +#ifdef AI_NUMERICSERV static constexpr flags numeric_service = __flags_numeric_service; +#endif static constexpr flags v4_mapped = __flags_v4_mapped; static constexpr flags all_matching = __flags_all_matching; static constexpr flags address_configured = __flags_address_configured; diff --git a/libstdc++-v3/testsuite/experimental/net/internet/resolver/base.cc b/libstdc++-v3/testsuite/experimental/net/internet/resolver/base.cc index 657e2f56b43..746557af656 100644 --- a/libstdc++-v3/testsuite/experimental/net/internet/resolver/base.cc +++ b/libstdc++-v3/testsuite/experimental/net/internet/resolver/base.cc @@ -49,7 +49,9 @@ test01() (void) resolver::passive; (void) resolver::canonical_name; (void) resolver::numeric_host; +#ifdef AI_NUMERICSERV (void) resolver::numeric_service; +#endif (void) resolver::v4_mapped; (void) resolver::all_matching; (void) resolver::address_configured; diff --git a/libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/lookup.cc b/libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/lookup.cc index d926385f1a8..39fb7fd7708 100644 --- a/libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/lookup.cc +++ b/libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/lookup.cc @@ -49,7 +49,10 @@ test02() std::error_code ec; io_context ctx; ip::tcp::resolver resolv(ctx); - auto flags = ip::resolver_base::numeric_host | ip::tcp::resolver::numeric_service; + auto flags = ip::resolver_base::numeric_host; +#ifdef AI_NUMERICSERV + flags |= ip::tcp::resolver::numeric_service; +#endif auto addrs = resolv.resolve("127.0.0.1", "42", flags, ec); VERIFY( !ec ); VERIFY( addrs.size() > 0 );