From 250b95a99487b5d19f54067c0b420fe252062aac Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Mon, 27 Jun 2022 10:34:14 -0300 Subject: [PATCH] libstdc++: xfail experimental/net tests on rtems Some net/timer/waitable tests fail on rtems because poll() is not available. The above, as well as net/internet/resolver/ops tests and net/timer/waitable/cons.cc, will fail early at runtime unless mkfifo is enabled in the RTEMS configuration, because the io_context ctor throws when pipe() fails. However, even enabling pipes and adjusting the net_ts link command to use --gc-sections for -lbsd as recommended, both net/internet/resolver/ops still fail at runtime. for libstdc++-v3/ChangeLog * testsuite/lib/dg-options.exp (add_options_for_net_ts): Add -Wl,--gc-sections for RTEMS targets. * testsuite/experimental/net/timer/waitable/dest.cc: Link-time xfail on RTEMS. * testsuite/experimental/net/timer/waitable/ops.cc: Likewise. * testsuite/experimental/net/internet/resolver/ops/lookup.cc: Execution-time xfail on RTEMS. * testsuite/experimental/net/internet/resolver/ops/reverse.cc: Likewise. --- .../experimental/net/internet/resolver/ops/lookup.cc | 1 + .../experimental/net/internet/resolver/ops/reverse.cc | 1 + .../testsuite/experimental/net/timer/waitable/dest.cc | 1 + .../testsuite/experimental/net/timer/waitable/ops.cc | 1 + libstdc++-v3/testsuite/lib/dg-options.exp | 6 +----- 5 files changed, 5 insertions(+), 5 deletions(-) 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 eb411dea836..0ac9cb3513d 100644 --- a/libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/lookup.cc +++ b/libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/lookup.cc @@ -18,6 +18,7 @@ // { dg-do run { target c++14 } } // { dg-require-effective-target net_ts_ip } // { dg-add-options net_ts } +// { dg-xfail-run-if "io_context requires a working pipe" { *-*-rtems* } } #include #include diff --git a/libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/reverse.cc b/libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/reverse.cc index 361df2676ef..dfdf855c68c 100644 --- a/libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/reverse.cc +++ b/libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/reverse.cc @@ -18,6 +18,7 @@ // { dg-do run { target c++14 } } // { dg-require-effective-target net_ts_ip } // { dg-add-options net_ts } +// { dg-xfail-run-if "io_context requires a working pipe" { *-*-rtems* } } #include #include diff --git a/libstdc++-v3/testsuite/experimental/net/timer/waitable/dest.cc b/libstdc++-v3/testsuite/experimental/net/timer/waitable/dest.cc index f571f4a8d86..384f768c2b5 100644 --- a/libstdc++-v3/testsuite/experimental/net/timer/waitable/dest.cc +++ b/libstdc++-v3/testsuite/experimental/net/timer/waitable/dest.cc @@ -17,6 +17,7 @@ // { dg-do run { target c++14 } } // { dg-add-options libatomic } +// { dg-xfail-if "poll not available" { *-*-rtems* } } #include #include diff --git a/libstdc++-v3/testsuite/experimental/net/timer/waitable/ops.cc b/libstdc++-v3/testsuite/experimental/net/timer/waitable/ops.cc index 97ab629b893..815ad715780 100644 --- a/libstdc++-v3/testsuite/experimental/net/timer/waitable/ops.cc +++ b/libstdc++-v3/testsuite/experimental/net/timer/waitable/ops.cc @@ -17,6 +17,7 @@ // { dg-do run { target c++14 } } // { dg-add-options libatomic } +// { dg-xfail-if "poll not available" { *-*-rtems* } } #include #include diff --git a/libstdc++-v3/testsuite/lib/dg-options.exp b/libstdc++-v3/testsuite/lib/dg-options.exp index b61c4c0cb8f..cc312edc172 100644 --- a/libstdc++-v3/testsuite/lib/dg-options.exp +++ b/libstdc++-v3/testsuite/lib/dg-options.exp @@ -281,11 +281,7 @@ proc add_options_for_net_ts { flags } { if { [istarget *-*-solaris2*] } { return "$flags -lsocket -lnsl" } elseif { [istarget *-*-rtems*] } { - # Adding -Wl,--gc-sections would enable a few more tests to - # link, but all of them fail at runtime anyway, because the - # io_context ctor calls pipe(), which always fails, and thus - # the ctor throws a system error. - return "$flags -lbsd" + return "$flags -lbsd -Wl,--gc-sections" } return $flags }