public inbox for libstdc++@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] libstdc++: testsuite: use -lbsd for net_ts on RTEMS
@ 2022-06-22  5:24 Alexandre Oliva
  2022-06-22  9:11 ` Jonathan Wakely
  2022-06-23  9:01 ` Sebastian Huber
  0 siblings, 2 replies; 8+ messages in thread
From: Alexandre Oliva @ 2022-06-22  5:24 UTC (permalink / raw)
  To: gcc-patches, libstdc++


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?


for  libstdc++-v3/ChangeLog

	* testsuite/lib/dg-options.exp (add_options_for_net_ts): Add
	-lbsd for RTEMS targets.
---
 libstdc++-v3/testsuite/lib/dg-options.exp |    6 ++++++
 1 file changed, 6 insertions(+)

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
 }

-- 
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>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] libstdc++: testsuite: use -lbsd for net_ts on RTEMS
  2022-06-22  5:24 [PATCH] libstdc++: testsuite: use -lbsd for net_ts on RTEMS Alexandre Oliva
@ 2022-06-22  9:11 ` Jonathan Wakely
  2022-06-23  9:01 ` Sebastian Huber
  1 sibling, 0 replies; 8+ messages in thread
From: Jonathan Wakely @ 2022-06-22  9:11 UTC (permalink / raw)
  To: Alexandre Oliva; +Cc: gcc Patches, libstdc++

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.


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] libstdc++: testsuite: use -lbsd for net_ts on RTEMS
  2022-06-22  5:24 [PATCH] libstdc++: testsuite: use -lbsd for net_ts on RTEMS Alexandre Oliva
  2022-06-22  9:11 ` Jonathan Wakely
@ 2022-06-23  9:01 ` Sebastian Huber
  2022-06-23  9:06   ` Jonathan Wakely
  1 sibling, 1 reply; 8+ messages in thread
From: Sebastian Huber @ 2022-06-23  9:01 UTC (permalink / raw)
  To: Alexandre Oliva, gcc-patches, libstdc++

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.

-- 
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.huber@embedded-brains.de
phone: +49-89-18 94 741 - 16
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] libstdc++: testsuite: use -lbsd for net_ts on RTEMS
  2022-06-23  9:01 ` Sebastian Huber
@ 2022-06-23  9:06   ` Jonathan Wakely
  2022-06-23 11:26     ` Alexandre Oliva
  0 siblings, 1 reply; 8+ messages in thread
From: Jonathan Wakely @ 2022-06-23  9:06 UTC (permalink / raw)
  To: Sebastian Huber; +Cc: Alexandre Oliva, gcc-patches, libstdc++

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.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] libstdc++: testsuite: use -lbsd for net_ts on RTEMS
  2022-06-23  9:06   ` Jonathan Wakely
@ 2022-06-23 11:26     ` Alexandre Oliva
  2022-06-23 11:40       ` Jonathan Wakely
  0 siblings, 1 reply; 8+ messages in thread
From: Alexandre Oliva @ 2022-06-23 11:26 UTC (permalink / raw)
  To: Jonathan Wakely; +Cc: Sebastian Huber, gcc-patches, libstdc++

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>


-- 
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>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] libstdc++: testsuite: use -lbsd for net_ts on RTEMS
  2022-06-23 11:26     ` Alexandre Oliva
@ 2022-06-23 11:40       ` Jonathan Wakely
  2022-06-23 12:39         ` Alexandre Oliva
  0 siblings, 1 reply; 8+ messages in thread
From: Jonathan Wakely @ 2022-06-23 11:40 UTC (permalink / raw)
  To: Alexandre Oliva; +Cc: Jonathan Wakely, libstdc++, gcc-patches

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>
>


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] libstdc++: testsuite: use -lbsd for net_ts on RTEMS
  2022-06-23 11:40       ` Jonathan Wakely
@ 2022-06-23 12:39         ` Alexandre Oliva
  2022-06-27 13:29           ` Alexandre Oliva
  0 siblings, 1 reply; 8+ messages in thread
From: Alexandre Oliva @ 2022-06-23 12:39 UTC (permalink / raw)
  To: Jonathan Wakely; +Cc: Jonathan Wakely, libstdc++, gcc-patches

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>


-- 
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>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] libstdc++: testsuite: use -lbsd for net_ts on RTEMS
  2022-06-23 12:39         ` Alexandre Oliva
@ 2022-06-27 13:29           ` Alexandre Oliva
  0 siblings, 0 replies; 8+ messages in thread
From: Alexandre Oliva @ 2022-06-27 13:29 UTC (permalink / raw)
  To: Jonathan Wakely; +Cc: Jonathan Wakely, libstdc++, gcc-patches

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
 }


-- 
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>

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2022-06-27 13:29 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-22  5:24 [PATCH] libstdc++: testsuite: use -lbsd for net_ts on RTEMS Alexandre Oliva
2022-06-22  9:11 ` Jonathan Wakely
2022-06-23  9:01 ` Sebastian Huber
2022-06-23  9:06   ` Jonathan Wakely
2022-06-23 11:26     ` Alexandre Oliva
2022-06-23 11:40       ` Jonathan Wakely
2022-06-23 12:39         ` Alexandre Oliva
2022-06-27 13:29           ` Alexandre Oliva

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).