Some of the new Networking TS tests FAIL before Solaris 11.4 like this: FAIL: experimental/net/internet/address/v4/members.cc (test for excess errors) Excess errors: Undefined first referenced symbol in file inet_ntop /var/tmp//ccpcIRXj.o gai_strerror /var/tmp//ccpcIRXj.o ld: fatal: symbol referencing errors. No output written to ./members.exe collect2: error: ld returned 1 exit status
This happens because until the socket etc. functions were integrated into libc in Solaris 11.4, they only lived in libsocket and libnsl. The following patch fixes this by introducing a new dg-add-options keyword net_ts (I'm open for suggestions for the name, of course; networking_ts might be an option, too) and adding the requirement to the tests involved. With the patch below, all but one of the tests PASS on i386-pc-solaris2.10: FAIL: experimental/net/internet/resolver/ops/lookup.cc execution test /vol/gcc/src/hg/trunk/local/libstdc++-v3/testsuite/experimental/net/internet/res olver/ops/lookup.cc:35: void test01(): Assertion '!ec' failed. The code in question is auto addrs = resolv.resolve("localhost", "http", ec); VERIFY( !ec ); but "http" is missing from /etc/services before Solaris 11.4. Ok for mainline? Btw., one may want to do similarly for the Filesystem TS tests, introducing dg-add-options fs_ts (or filesystem_ts) instead of repeating dg-options "-DUSE_FILESYSTEM_TS -lstdc++fs" over and over again. Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University 2018-10-16 Rainer Orth <r...@cebitec.uni-bielefeld.de> libstdc++-v3: * testsuite/lib/dg-options.exp (add_options_for_net_ts): New proc. * testsuite/experimental/net/internet/address/v4/comparisons.cc: Add dg-add-options net_ts. * testsuite/experimental/net/internet/address/v4/cons.cc: Likewise. * testsuite/experimental/net/internet/address/v4/creation.cc: Likewise. * testsuite/experimental/net/internet/address/v4/members.cc: Likewise. * testsuite/experimental/net/internet/resolver/base.cc: Likewise. * testsuite/experimental/net/internet/resolver/ops/lookup.cc: Likewise. * testsuite/experimental/net/internet/resolver/ops/reverse.cc: Likewise.
# HG changeset patch # Parent a0cb3bedd3f9d8fb598a779b1954c257c9a97cc7 Introduce dg-add-options net_ts diff --git a/libstdc++-v3/testsuite/experimental/net/internet/address/v4/comparisons.cc b/libstdc++-v3/testsuite/experimental/net/internet/address/v4/comparisons.cc --- a/libstdc++-v3/testsuite/experimental/net/internet/address/v4/comparisons.cc +++ b/libstdc++-v3/testsuite/experimental/net/internet/address/v4/comparisons.cc @@ -16,6 +16,7 @@ // <http://www.gnu.org/licenses/>. // { dg-options "-std=gnu++14" } +// { dg-add-options net_ts } #include <experimental/internet> #include <testsuite_hooks.h> diff --git a/libstdc++-v3/testsuite/experimental/net/internet/address/v4/cons.cc b/libstdc++-v3/testsuite/experimental/net/internet/address/v4/cons.cc --- a/libstdc++-v3/testsuite/experimental/net/internet/address/v4/cons.cc +++ b/libstdc++-v3/testsuite/experimental/net/internet/address/v4/cons.cc @@ -16,6 +16,7 @@ // <http://www.gnu.org/licenses/>. // { dg-options "-std=gnu++14" } +// { dg-add-options net_ts } #include <experimental/internet> #include <testsuite_hooks.h> diff --git a/libstdc++-v3/testsuite/experimental/net/internet/address/v4/creation.cc b/libstdc++-v3/testsuite/experimental/net/internet/address/v4/creation.cc --- a/libstdc++-v3/testsuite/experimental/net/internet/address/v4/creation.cc +++ b/libstdc++-v3/testsuite/experimental/net/internet/address/v4/creation.cc @@ -16,6 +16,7 @@ // <http://www.gnu.org/licenses/>. // { dg-options "-std=gnu++14" } +// { dg-add-options net_ts } #include <experimental/internet> #include <testsuite_hooks.h> diff --git a/libstdc++-v3/testsuite/experimental/net/internet/address/v4/members.cc b/libstdc++-v3/testsuite/experimental/net/internet/address/v4/members.cc --- a/libstdc++-v3/testsuite/experimental/net/internet/address/v4/members.cc +++ b/libstdc++-v3/testsuite/experimental/net/internet/address/v4/members.cc @@ -16,6 +16,7 @@ // <http://www.gnu.org/licenses/>. // { dg-options "-std=gnu++14" } +// { dg-add-options net_ts } #include <experimental/internet> #include <testsuite_hooks.h> diff --git a/libstdc++-v3/testsuite/experimental/net/internet/resolver/base.cc b/libstdc++-v3/testsuite/experimental/net/internet/resolver/base.cc --- a/libstdc++-v3/testsuite/experimental/net/internet/resolver/base.cc +++ b/libstdc++-v3/testsuite/experimental/net/internet/resolver/base.cc @@ -16,6 +16,7 @@ // <http://www.gnu.org/licenses/>. // { dg-options "-std=gnu++14" } +// { dg-add-options net_ts } #include <experimental/internet> #include <testsuite_hooks.h> diff --git a/libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/lookup.cc b/libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/lookup.cc --- a/libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/lookup.cc +++ b/libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/lookup.cc @@ -16,6 +16,7 @@ // <http://www.gnu.org/licenses/>. // { dg-options "-std=gnu++14" } +// { dg-add-options net_ts } #include <experimental/internet> #include <testsuite_hooks.h> diff --git a/libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/reverse.cc b/libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/reverse.cc --- a/libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/reverse.cc +++ b/libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/reverse.cc @@ -16,6 +16,7 @@ // <http://www.gnu.org/licenses/>. // { dg-options "-std=gnu++14" } +// { dg-add-options net_ts } #include <experimental/internet> #include <testsuite_hooks.h> diff --git a/libstdc++-v3/testsuite/lib/dg-options.exp b/libstdc++-v3/testsuite/lib/dg-options.exp --- a/libstdc++-v3/testsuite/lib/dg-options.exp +++ b/libstdc++-v3/testsuite/lib/dg-options.exp @@ -246,6 +246,17 @@ proc add_options_for_no_pch { flags } { return "-D__GLIBCXX__=99999999" } +# Add to FLAGS all the target-specific flags needed for networking. + +proc add_options_for_net_ts { flags } { + # Before they were integrated into libc in Solaris 11.4, Solaris needs + # libsocket and libnsl for networking applications. + if { [istarget *-*-solaris2*] } { + return "$flags -lsocket -lnsl" + } + return $flags +} + # Like dg-options, but adds to the default options rather than replacing them. proc dg-additional-options { args } {