Message ID | orczf1b798.fsf@lxoliva.fsfla.org |
---|---|
State | New |
Headers | show |
Series | libstdc++: testsuite: use -lbsd for net_ts on RTEMS | expand |
On Wed, 22 Jun 2022 at 06:25, Alexandre Oliva via Libstdc++ <libstdc++@gcc.gnu.org> wrote: > > > Networking functions that net_ts tests rely on are defined in libbsd > on RTEMS, so link with it. > > Regstrapped on x86_64-linux-gnu, also tested with a cross to > aarch64-rtems6. Ok to install? OK, thanks.
On 22/06/2022 07:24, Alexandre Oliva via Gcc-patches wrote: > + } 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" Using -Wl,--gc-sections is mandatory if you want to link against libbsd.a. In general, it is recommended for RTEMS applications. For pipe() support in RTEMS, you currently need the #define CONFIGURE_IMFS_ENABLE_MKFIFO application configuration option.
On Thu, 23 Jun 2022, 10:02 Sebastian Huber, < sebastian.huber@embedded-brains.de> wrote: > On 22/06/2022 07:24, Alexandre Oliva via Gcc-patches wrote: > > + } 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" > > Using -Wl,--gc-sections is mandatory if you want to link against > libbsd.a. In general, it is recommended for RTEMS applications. > > For pipe() support in RTEMS, you currently need the > > #define CONFIGURE_IMFS_ENABLE_MKFIFO > > application configuration option. > It would also be fine to just xfail the networking tests for rtems. Our implementation of the Networking TS is incomplete, buggy, and unlikely to evolve much until the C++ committee makes progress on standardized networking. Anybody who wants to use the Networking TS model has to use Boost.Asio for real work, our partial implementation isn't good enough. So making it work and pass tests on rtems isn't important.
On Jun 23, 2022, Jonathan Wakely <jwakely.gcc@gmail.com> wrote: > On Thu, 23 Jun 2022, 10:02 Sebastian Huber, < > sebastian.huber@embedded-brains.de> wrote: >> On 22/06/2022 07:24, Alexandre Oliva via Gcc-patches wrote: >> > + } 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" >> >> Using -Wl,--gc-sections is mandatory if you want to link against >> libbsd.a. Weirdly, it worked for all other testcases. >> For pipe() support in RTEMS, you currently need the >> #define CONFIGURE_IMFS_ENABLE_MKFIFO Thanks, I'll reach out to the person in charge of our rtems configuration for this project, and suggest enabling it on our end. > It would also be fine to just xfail the networking tests for rtems. I was using something like this internally. Regstrapped on x86_64-linux-gnu, also tested with a cross to aarch64-rtems6. Ok to install? libstdc++: xfail io_context/pipe users on rtems From: Alexandre Oliva <oliva@adacore.com> A handful of tests fail on rtems because pipe() always returns -1, and the io_context ctor throws a system error when pipe() fails. for libstdc++-v3/ChangeLog * testsuite/experimental/net/timer/waitable/cons.cc: xfail on RTEMS. * testsuite/experimental/net/timer/waitable/dest.cc: Likewise. * testsuite/experimental/net/timer/waitable/ops.cc: Likewise. * testsuite/experimental/net/internet/resolver/ops/lookup.cc: Likewise. * testsuite/experimental/net/internet/resolver/ops/reverse.cc: Likewise. TN: V617-003 --- .../net/internet/resolver/ops/lookup.cc | 1 + .../net/internet/resolver/ops/reverse.cc | 1 + .../experimental/net/timer/waitable/cons.cc | 1 + .../experimental/net/timer/waitable/dest.cc | 1 + .../experimental/net/timer/waitable/ops.cc | 1 + 5 files changed, 5 insertions(+) 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 eb411dea8369c..7684c21012dfb 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-if "io_context requires a working pipe" { *-*-rtems* } } #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 index 361df2676efc8..3ef51f9ebe848 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-if "io_context requires a working pipe" { *-*-rtems* } } #include <experimental/internet> #include <testsuite_hooks.h> diff --git a/libstdc++-v3/testsuite/experimental/net/timer/waitable/cons.cc b/libstdc++-v3/testsuite/experimental/net/timer/waitable/cons.cc index 40ae5b965a2b0..4e055eadb20a0 100644 --- a/libstdc++-v3/testsuite/experimental/net/timer/waitable/cons.cc +++ b/libstdc++-v3/testsuite/experimental/net/timer/waitable/cons.cc @@ -17,6 +17,7 @@ // { dg-do run { target c++14 } } // { dg-add-options libatomic } +// { dg-xfail-if "io_context requires a working pipe" { *-*-rtems* } } #include <experimental/timer> #include <testsuite_hooks.h> diff --git a/libstdc++-v3/testsuite/experimental/net/timer/waitable/dest.cc b/libstdc++-v3/testsuite/experimental/net/timer/waitable/dest.cc index f571f4a8d861a..2f2e425fa0b33 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 "io_context requires a working pipe" { *-*-rtems* } } #include <experimental/timer> #include <testsuite_hooks.h> diff --git a/libstdc++-v3/testsuite/experimental/net/timer/waitable/ops.cc b/libstdc++-v3/testsuite/experimental/net/timer/waitable/ops.cc index 97ab629b893a9..a52f3259193c4 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 "io_context requires a working pipe" { *-*-rtems* } } #include <experimental/timer> #include <testsuite_hooks.h>
On Thu, 23 Jun 2022 at 12:26, Alexandre Oliva via Libstdc++ <libstdc++@gcc.gnu.org> wrote: > > On Jun 23, 2022, Jonathan Wakely <jwakely.gcc@gmail.com> wrote: > > > On Thu, 23 Jun 2022, 10:02 Sebastian Huber, < > > sebastian.huber@embedded-brains.de> wrote: > > >> On 22/06/2022 07:24, Alexandre Oliva via Gcc-patches wrote: > >> > + } 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" > >> > >> Using -Wl,--gc-sections is mandatory if you want to link against > >> libbsd.a. > > Weirdly, it worked for all other testcases. > > >> For pipe() support in RTEMS, you currently need the > > >> #define CONFIGURE_IMFS_ENABLE_MKFIFO > > Thanks, I'll reach out to the person in charge of our rtems > configuration for this project, and suggest enabling it on our end. > > > > It would also be fine to just xfail the networking tests for rtems. > > I was using something like this internally. Regstrapped on > x86_64-linux-gnu, also tested with a cross to aarch64-rtems6. Ok to > install? OK, thanks. > > > libstdc++: xfail io_context/pipe users on rtems > > From: Alexandre Oliva <oliva@adacore.com> > > A handful of tests fail on rtems because pipe() always returns -1, and > the io_context ctor throws a system error when pipe() fails. > > > for libstdc++-v3/ChangeLog > > * testsuite/experimental/net/timer/waitable/cons.cc: xfail on > RTEMS. > * testsuite/experimental/net/timer/waitable/dest.cc: Likewise. > * testsuite/experimental/net/timer/waitable/ops.cc: Likewise. > * testsuite/experimental/net/internet/resolver/ops/lookup.cc: > Likewise. > * testsuite/experimental/net/internet/resolver/ops/reverse.cc: > Likewise. > > TN: V617-003 > --- > .../net/internet/resolver/ops/lookup.cc | 1 + > .../net/internet/resolver/ops/reverse.cc | 1 + > .../experimental/net/timer/waitable/cons.cc | 1 + > .../experimental/net/timer/waitable/dest.cc | 1 + > .../experimental/net/timer/waitable/ops.cc | 1 + > 5 files changed, 5 insertions(+) > > 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 eb411dea8369c..7684c21012dfb 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-if "io_context requires a working pipe" { *-*-rtems* } } > > #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 > index 361df2676efc8..3ef51f9ebe848 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-if "io_context requires a working pipe" { *-*-rtems* } } > > #include <experimental/internet> > #include <testsuite_hooks.h> > diff --git a/libstdc++-v3/testsuite/experimental/net/timer/waitable/cons.cc b/libstdc++-v3/testsuite/experimental/net/timer/waitable/cons.cc > index 40ae5b965a2b0..4e055eadb20a0 100644 > --- a/libstdc++-v3/testsuite/experimental/net/timer/waitable/cons.cc > +++ b/libstdc++-v3/testsuite/experimental/net/timer/waitable/cons.cc > @@ -17,6 +17,7 @@ > > // { dg-do run { target c++14 } } > // { dg-add-options libatomic } > +// { dg-xfail-if "io_context requires a working pipe" { *-*-rtems* } } > > #include <experimental/timer> > #include <testsuite_hooks.h> > diff --git a/libstdc++-v3/testsuite/experimental/net/timer/waitable/dest.cc b/libstdc++-v3/testsuite/experimental/net/timer/waitable/dest.cc > index f571f4a8d861a..2f2e425fa0b33 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 "io_context requires a working pipe" { *-*-rtems* } } > > #include <experimental/timer> > #include <testsuite_hooks.h> > diff --git a/libstdc++-v3/testsuite/experimental/net/timer/waitable/ops.cc b/libstdc++-v3/testsuite/experimental/net/timer/waitable/ops.cc > index 97ab629b893a9..a52f3259193c4 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 "io_context requires a working pipe" { *-*-rtems* } } > > #include <experimental/timer> > #include <testsuite_hooks.h> > > > -- > Alexandre Oliva, happy hacker https://FSFLA.org/blogs/lxo/ > Free Software Activist GNU Toolchain Engineer > Disinformation flourishes because many people care deeply about injustice > but very few check the facts. Ask me about <https://stallmansupport.org> >
On Jun 23, 2022, Jonathan Wakely <jwakely@redhat.com> wrote: > On Thu, 23 Jun 2022 at 12:26, Alexandre Oliva via Libstdc++ > <libstdc++@gcc.gnu.org> wrote: >> I was using something like this internally. Regstrapped on >> x86_64-linux-gnu, also tested with a cross to aarch64-rtems6. Ok to >> install? > OK, thanks. Sorry, I goofed when testing this, and another internal xfail machinery hid the bug: I had to use dg-xfail-run-if instead. I caught that later, but it looks like I failed to refresh the xfail patchfiles I posted :-( I'm going ahead and check it in assuming this is what you meant to approve, but only after catching some sleep, because it's been a long day and I don't want any more goofs ;-) libstdc++: xfail io_context/pipe users on rtems From: Alexandre Oliva <oliva@adacore.com> A handful of tests fail on rtems because pipe() always returns -1, and the io_context ctor throws a system error when pipe() fails. for libstdc++-v3/ChangeLog * testsuite/experimental/net/timer/waitable/cons.cc: xfail on RTEMS. * testsuite/experimental/net/timer/waitable/dest.cc: Likewise. * testsuite/experimental/net/timer/waitable/ops.cc: Likewise. * testsuite/experimental/net/internet/resolver/ops/lookup.cc: Likewise. * testsuite/experimental/net/internet/resolver/ops/reverse.cc: Likewise. TN: V617-003 --- .../net/internet/resolver/ops/lookup.cc | 1 + .../net/internet/resolver/ops/reverse.cc | 1 + .../experimental/net/timer/waitable/cons.cc | 1 + .../experimental/net/timer/waitable/dest.cc | 1 + .../experimental/net/timer/waitable/ops.cc | 1 + 5 files changed, 5 insertions(+) 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 eb411dea8369c..0ac9cb3513d7e 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 <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 index 361df2676efc8..dfdf855c68cd7 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 <experimental/internet> #include <testsuite_hooks.h> diff --git a/libstdc++-v3/testsuite/experimental/net/timer/waitable/cons.cc b/libstdc++-v3/testsuite/experimental/net/timer/waitable/cons.cc index 40ae5b965a2b0..f013278675d33 100644 --- a/libstdc++-v3/testsuite/experimental/net/timer/waitable/cons.cc +++ b/libstdc++-v3/testsuite/experimental/net/timer/waitable/cons.cc @@ -17,6 +17,7 @@ // { dg-do run { target c++14 } } // { dg-add-options libatomic } +// { dg-xfail-run-if "io_context requires a working pipe" { *-*-rtems* } } #include <experimental/timer> #include <testsuite_hooks.h> diff --git a/libstdc++-v3/testsuite/experimental/net/timer/waitable/dest.cc b/libstdc++-v3/testsuite/experimental/net/timer/waitable/dest.cc index f571f4a8d861a..dc557d01a9136 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-run-if "io_context requires a working pipe" { *-*-rtems* } } #include <experimental/timer> #include <testsuite_hooks.h> diff --git a/libstdc++-v3/testsuite/experimental/net/timer/waitable/ops.cc b/libstdc++-v3/testsuite/experimental/net/timer/waitable/ops.cc index 97ab629b893a9..f7549def38925 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-run-if "io_context requires a working pipe" { *-*-rtems* } } #include <experimental/timer> #include <testsuite_hooks.h>
On Jun 23, 2022, Alexandre Oliva <oliva@adacore.com> wrote: > Sorry, I goofed when testing this, and another internal xfail machinery > hid the bug: I had to use dg-xfail-run-if instead. And then, having enabled pipe(), disabled the internal xfail machinery, and added -Wl,--gc-sections after -lbsd as recommended, I found that net/timer/waitable/cons.cc passed; that the other waitable tests failed to link because of poll(), not pipes; and that the resolver tests failed for other reasons. So here's the adjusted patch I'm using now, and that I'll check in shortly. 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. Regstrapped on x86_64-linux-gnu, also tested with a cross to aarch64-rtems6. Ok to install? 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. --- .../net/internet/resolver/ops/lookup.cc | 1 + .../net/internet/resolver/ops/reverse.cc | 1 + .../experimental/net/timer/waitable/dest.cc | 1 + .../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 eb411dea8369c..0ac9cb3513d7e 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 <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 index 361df2676efc8..dfdf855c68cd7 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 <experimental/internet> #include <testsuite_hooks.h> diff --git a/libstdc++-v3/testsuite/experimental/net/timer/waitable/dest.cc b/libstdc++-v3/testsuite/experimental/net/timer/waitable/dest.cc index f571f4a8d861a..384f768c2b56d 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 <experimental/timer> #include <testsuite_hooks.h> diff --git a/libstdc++-v3/testsuite/experimental/net/timer/waitable/ops.cc b/libstdc++-v3/testsuite/experimental/net/timer/waitable/ops.cc index 97ab629b893a9..815ad71578035 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 <experimental/timer> #include <testsuite_hooks.h> diff --git a/libstdc++-v3/testsuite/lib/dg-options.exp b/libstdc++-v3/testsuite/lib/dg-options.exp index b61c4c0cb8fcd..cc312edc172e4 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 }
diff --git a/libstdc++-v3/testsuite/lib/dg-options.exp b/libstdc++-v3/testsuite/lib/dg-options.exp index 203bb0dfed505..15f37da468a5b 100644 --- a/libstdc++-v3/testsuite/lib/dg-options.exp +++ b/libstdc++-v3/testsuite/lib/dg-options.exp @@ -253,6 +253,12 @@ proc add_options_for_net_ts { flags } { # libsocket and libnsl for networking applications. 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 }