Re: [PATCH] Fix libstdc++ tests requiring atomic support on hppa-hpux

2019-03-12 Thread Joseph Myers
On Tue, 12 Mar 2019, Hans-Peter Nilsson wrote:

> When is it appropriate to make the user add -latomic to link
> their program?  Perhaps different answers for fortran and C++.
> I'm guessing "always when using any atomic construct" for C.

I think we should link with --as-needed -latomic --no-as-needed by default 
when --as-needed is supported (see bug 81358).

-- 
Joseph S. Myers
jos...@codesourcery.com


Re: [PATCH] Fix libstdc++ tests requiring atomic support on hppa-hpux

2019-03-12 Thread Hans-Peter Nilsson
Regarding this sometimes-add--latomic(-in-testsuite) that is
revisited:

When is it appropriate to make the user add -latomic to link
their program?  Perhaps different answers for fortran and C++.
I'm guessing "always when using any atomic construct" for C.

I had a grep-look in gcc/doc before asking; I can't see we say
anything.

I don't think "when the target lacks certain atomic features" is
a full valid answer, except pragmatically, to paper over a bug.

brgds, H-P
PS. I'll do the patch if you (someone) does the words.


Re: [PATCH] Fix libstdc++ tests requiring atomic support on hppa-hpux

2019-03-12 Thread John David Anglin
On 2019-03-12 7:05 p.m., Jonathan Wakely wrote:
> On 12/03/19 23:01 +, Joseph Myers wrote:
>> On Mon, 11 Mar 2019, Jonathan Wakely wrote:
>>
>>> +proc add_options_for_libatomic { flags } {
>>> +    if { [istarget hppa*-*-hpux*] } {
>>> +   return "$flags -L../../libatomic/.libs -latomic"
>>> +    } option.
>>
>> It's generally inappropriate to hardcode such ../../libatomic/.libs paths
>> without making sure it's for build-tree rather than installed testing (for
>> installed testing, -latomic can be found without any -L option and it's
>> the board file's responsibility to set LD_LIBRARY_PATH if necessary).
>
> I was going to say something about that, but then saw we already do it
> for libgomp/.libs as well. Two wrongs now though ..
I just installed the change before I saw Joseph's comment.  I don't believe 
-latomic can be
found without a -L option in the libstdc++ testsuite.  That's why it's done for 
libgomp.

However, it's not needed for c, c++, fortran testsuites.  They also setup 
LD_LIBRARY_PATH
for testing in build tree.  I've never had to use a board file to get this 
right.

-- 
John David Anglin  dave.ang...@bell.net



Re: [PATCH] Fix libstdc++ tests requiring atomic support on hppa-hpux

2019-03-12 Thread Jonathan Wakely

On 12/03/19 23:01 +, Joseph Myers wrote:

On Mon, 11 Mar 2019, Jonathan Wakely wrote:


+proc add_options_for_libatomic { flags } {
+if { [istarget hppa*-*-hpux*] } {
+   return "$flags -L../../libatomic/.libs -latomic"
+}


It's generally inappropriate to hardcode such ../../libatomic/.libs paths
without making sure it's for build-tree rather than installed testing (for
installed testing, -latomic can be found without any -L option and it's
the board file's responsibility to set LD_LIBRARY_PATH if necessary).


I was going to say something about that, but then saw we already do it
for libgomp/.libs as well. Two wrongs now though ...



Re: [PATCH] Fix libstdc++ tests requiring atomic support on hppa-hpux

2019-03-12 Thread Joseph Myers
On Mon, 11 Mar 2019, Jonathan Wakely wrote:

> +proc add_options_for_libatomic { flags } {
> +if { [istarget hppa*-*-hpux*] } {
> +   return "$flags -L../../libatomic/.libs -latomic"
> +}

It's generally inappropriate to hardcode such ../../libatomic/.libs paths 
without making sure it's for build-tree rather than installed testing (for 
installed testing, -latomic can be found without any -L option and it's 
the board file's responsibility to set LD_LIBRARY_PATH if necessary).

-- 
Joseph S. Myers
jos...@codesourcery.com


Re: [PATCH] Fix libstdc++ tests requiring atomic support on hppa-hpux

2019-03-11 Thread Jonathan Wakely

On 11/03/19 13:54 +, Jonathan Wakely wrote:

On 11/03/19 09:27 -0400, John David Anglin wrote:

On 2019-03-11 9:16 a.m., Jonathan Wakely wrote:

On 11/03/19 14:13 +0100, Andreas Schwab wrote:

On Mär 11 2019, Jonathan Wakely  wrote:


What do you think about adding the following?

--- a/libstdc++-v3/testsuite/lib/dg-options.exp
+++ b/libstdc++-v3/testsuite/lib/dg-options.exp
@@ -257,6 +257,15 @@ proc add_options_for_net_ts { flags } {
    return $flags
}

+# Add to FLAGS all the target-specific flags to link to libatomic, if required.
+
+proc add_options_for_libatomic { flags } {
+    if { [istarget hppa*-*-hpux*] } {
+   return "$flags -L../../libatomic/.libs -latomic"
+    }
+    return $flags
+}


That should probably also be enabled for riscv*-*-*.


So all the more reason to do it this way, so the list of targets is
only maintained in one place

Your suggestion looks good to me.  We still need hunk that sets up 
LD_LIBRARY_PATH.


Right.


This is what is done in fortran tests:
! { dg-additional-options "-latomic" { target libatomic_available } }


That adds it for every target that has a libatomic though, right? We
have tests that check certain uses of atomics work without libatomic,
which would no longer check anything if we added that to them :-)


Ah, but unless -L../../libatomic./libs has been added to the flags,
-latomic won't find anything, so it wouldn't get added.

I still think {target libatomic_available } doesn't buy us much, due
to ...


If we use { dg-add-options libatomic } it'll only be added for the
listed targets (hpux and riscv to begin with) and if somebody disables
building libatomic on those targets they probably should get test
failures to say there's something wrong.



Re: [PATCH] Fix libstdc++ tests requiring atomic support on hppa-hpux

2019-03-11 Thread Jonathan Wakely

On 11/03/19 09:27 -0400, John David Anglin wrote:

On 2019-03-11 9:16 a.m., Jonathan Wakely wrote:

On 11/03/19 14:13 +0100, Andreas Schwab wrote:

On Mär 11 2019, Jonathan Wakely  wrote:


What do you think about adding the following?

--- a/libstdc++-v3/testsuite/lib/dg-options.exp
+++ b/libstdc++-v3/testsuite/lib/dg-options.exp
@@ -257,6 +257,15 @@ proc add_options_for_net_ts { flags } {
    return $flags
}

+# Add to FLAGS all the target-specific flags to link to libatomic, if required.
+
+proc add_options_for_libatomic { flags } {
+    if { [istarget hppa*-*-hpux*] } {
+   return "$flags -L../../libatomic/.libs -latomic"
+    }
+    return $flags
+}


That should probably also be enabled for riscv*-*-*.


So all the more reason to do it this way, so the list of targets is
only maintained in one place

Your suggestion looks good to me.  We still need hunk that sets up 
LD_LIBRARY_PATH.


Right.


This is what is done in fortran tests:
! { dg-additional-options "-latomic" { target libatomic_available } }


That adds it for every target that has a libatomic though, right? We
have tests that check certain uses of atomics work without libatomic,
which would no longer check anything if we added that to them :-)

If we use { dg-add-options libatomic } it'll only be added for the
listed targets (hpux and riscv to begin with) and if somebody disables
building libatomic on those targets they probably should get test
failures to say there's something wrong.



Re: [PATCH] Fix libstdc++ tests requiring atomic support on hppa-hpux

2019-03-11 Thread John David Anglin
On 2019-03-11 9:16 a.m., Jonathan Wakely wrote:
> On 11/03/19 14:13 +0100, Andreas Schwab wrote:
>> On Mär 11 2019, Jonathan Wakely  wrote:
>>
>>> What do you think about adding the following?
>>>
>>> --- a/libstdc++-v3/testsuite/lib/dg-options.exp
>>> +++ b/libstdc++-v3/testsuite/lib/dg-options.exp
>>> @@ -257,6 +257,15 @@ proc add_options_for_net_ts { flags } {
>>>     return $flags
>>> }
>>>
>>> +# Add to FLAGS all the target-specific flags to link to libatomic, if 
>>> required.
>>> +
>>> +proc add_options_for_libatomic { flags } {
>>> +    if { [istarget hppa*-*-hpux*] } {
>>> +   return "$flags -L../../libatomic/.libs -latomic"
>>> +    }
>>> +    return $flags
>>> +}
>>
>> That should probably also be enabled for riscv*-*-*.
>
> So all the more reason to do it this way, so the list of targets is
> only maintained in one place
Your suggestion looks good to me.  We still need hunk that sets up 
LD_LIBRARY_PATH.

This is what is done in fortran tests:
! { dg-additional-options "-latomic" { target libatomic_available } }

Dave

-- 
John David Anglin  dave.ang...@bell.net




Re: [PATCH] Fix libstdc++ tests requiring atomic support on hppa-hpux

2019-03-11 Thread Jonathan Wakely

On 11/03/19 14:13 +0100, Andreas Schwab wrote:

On Mär 11 2019, Jonathan Wakely  wrote:


What do you think about adding the following?

--- a/libstdc++-v3/testsuite/lib/dg-options.exp
+++ b/libstdc++-v3/testsuite/lib/dg-options.exp
@@ -257,6 +257,15 @@ proc add_options_for_net_ts { flags } {
return $flags
}

+# Add to FLAGS all the target-specific flags to link to libatomic, if required.
+
+proc add_options_for_libatomic { flags } {
+if { [istarget hppa*-*-hpux*] } {
+   return "$flags -L../../libatomic/.libs -latomic"
+}
+return $flags
+}


That should probably also be enabled for riscv*-*-*.


So all the more reason to do it this way, so the list of targets is
only maintained in one place.




Re: [PATCH] Fix libstdc++ tests requiring atomic support on hppa-hpux

2019-03-11 Thread Andreas Schwab
On Mär 11 2019, Jonathan Wakely  wrote:

> What do you think about adding the following?
>
> --- a/libstdc++-v3/testsuite/lib/dg-options.exp
> +++ b/libstdc++-v3/testsuite/lib/dg-options.exp
> @@ -257,6 +257,15 @@ proc add_options_for_net_ts { flags } {
> return $flags
> }
>
> +# Add to FLAGS all the target-specific flags to link to libatomic, if 
> required.
> +
> +proc add_options_for_libatomic { flags } {
> +if { [istarget hppa*-*-hpux*] } {
> +   return "$flags -L../../libatomic/.libs -latomic"
> +}
> +return $flags
> +}

That should probably also be enabled for riscv*-*-*.

Andreas.

-- 
Andreas Schwab, SUSE Labs, sch...@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."


Re: [PATCH] Fix libstdc++ tests requiring atomic support on hppa-hpux

2019-03-11 Thread Jonathan Wakely

On 09/03/19 12:46 -0500, John David Anglin wrote:

The hppa*-*-hpux* target has no builtin atomic support, so we need to 
explicitly link
applications requiring atomic support against libatomic.

Okay?

Dave
--
John David Anglin  dave.ang...@bell.net

2019-03-09  John David Anglin  

PR libstdc++/89461
* testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc: Link
against libatomic on hppa*-*-hpux*.
* testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
* testsuite/experimental/net/timer/waitable/cons.cc: Likewise.
* testsuite/experimental/net/timer/waitable/dest.cc: Likewise.
* testsuite/experimental/net/timer/waitable/ops.cc: Likewise.
* testsuite/lib/libstdc++.exp: Locate libatomic.



What do you think about adding the following?

--- a/libstdc++-v3/testsuite/lib/dg-options.exp
+++ b/libstdc++-v3/testsuite/lib/dg-options.exp
@@ -257,6 +257,15 @@ proc add_options_for_net_ts { flags } {
return $flags
}

+# Add to FLAGS all the target-specific flags to link to libatomic, if required.
+
+proc add_options_for_libatomic { flags } {
+if { [istarget hppa*-*-hpux*] } {
+   return "$flags -L../../libatomic/.libs -latomic"
+}
+return $flags
+}
+
# Like dg-options, but adds to the default options rather than replacing them.

proc dg-additional-options { args } {





Index: testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc
===
--- testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc (revision 
269442)
+++ testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc (working copy)
@@ -22,6 +22,7 @@
// { dg-require-effective-target c++11 }
// { dg-require-effective-target pthread }
// { dg-require-cstdint "" }
+// { dg-additional-options "-L../../libatomic/.libs -latomic" { target 
hppa*-*-hpux* } }


And then this would be:

--- a/libstdc++-v3/testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc
@@ -19,6 +19,7 @@

// { dg-do run }
// { dg-options "-pthread"  }
+// { dg-add-options libatomic }
// { dg-require-effective-target c++11 }
// { dg-require-effective-target pthread }
// { dg-require-cstdint "" }




[PATCH] Fix libstdc++ tests requiring atomic support on hppa-hpux

2019-03-09 Thread John David Anglin
The hppa*-*-hpux* target has no builtin atomic support, so we need to 
explicitly link
applications requiring atomic support against libatomic.

Okay?

Dave
-- 
John David Anglin  dave.ang...@bell.net

2019-03-09  John David Anglin  

PR libstdc++/89461
* testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc: Link
against libatomic on hppa*-*-hpux*.
* testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
* testsuite/experimental/net/timer/waitable/cons.cc: Likewise.
* testsuite/experimental/net/timer/waitable/dest.cc: Likewise.
* testsuite/experimental/net/timer/waitable/ops.cc: Likewise.
* testsuite/lib/libstdc++.exp: Locate libatomic.

Index: testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc
===
--- testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc (revision 
269442)
+++ testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc (working copy)
@@ -22,6 +22,7 @@
 // { dg-require-effective-target c++11 }
 // { dg-require-effective-target pthread }
 // { dg-require-cstdint "" }
+// { dg-additional-options "-L../../libatomic/.libs -latomic" { target 
hppa*-*-hpux* } }

 #include 
 #include 
Index: testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc
===
--- testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc   (revision 
269442)
+++ testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc   (working copy)
@@ -22,6 +22,7 @@
 // { dg-require-effective-target c++11 }
 // { dg-require-effective-target pthread }
 // { dg-require-cstdint "" }
+// { dg-additional-options "-L../../libatomic/.libs -latomic" { target 
hppa*-*-hpux* } }

 #include 
 #include 
Index: testsuite/experimental/net/timer/waitable/cons.cc
===
--- testsuite/experimental/net/timer/waitable/cons.cc   (revision 269442)
+++ testsuite/experimental/net/timer/waitable/cons.cc   (working copy)
@@ -16,6 +16,7 @@
 // .

 // { dg-do run { target c++14 } }
+// { dg-additional-options "-L../../libatomic/.libs -latomic" { target 
hppa*-*-hpux* } }

 #include 
 #include 
Index: testsuite/experimental/net/timer/waitable/dest.cc
===
--- testsuite/experimental/net/timer/waitable/dest.cc   (revision 269442)
+++ testsuite/experimental/net/timer/waitable/dest.cc   (working copy)
@@ -16,6 +16,7 @@
 // .

 // { dg-do run { target c++14 } }
+// { dg-additional-options "-L../../libatomic/.libs -latomic" { target 
hppa*-*-hpux* } }

 #include 
 #include 
Index: testsuite/experimental/net/timer/waitable/ops.cc
===
--- testsuite/experimental/net/timer/waitable/ops.cc(revision 269442)
+++ testsuite/experimental/net/timer/waitable/ops.cc(working copy)
@@ -16,6 +16,7 @@
 // .

 // { dg-do run { target c++14 } }
+// { dg-additional-options "-L../../libatomic/.libs -latomic" { target 
hppa*-*-hpux* } }

 #include 
 #include 
Index: testsuite/lib/libstdc++.exp
===
--- testsuite/lib/libstdc++.exp (revision 269442)
+++ testsuite/lib/libstdc++.exp (working copy)
@@ -161,6 +161,17 @@
 }
 v3track gccdir 3

+# Locate libatomic.
+set v3-libatomic 0
+set libatomicdir [lookfor_file $blddir/../libatomic 
.libs/libatomic.$shlib_ext]
+if {$libatomicdir != ""} {
+   set v3-libatomic 1
+   set libatomicdir [file dirname $libatomicdir]
+   append ld_library_path_tmp ":${libatomicdir}"
+   verbose -log "libatomic support detected"
+}
+v3track libatomicdir 3
+
 # Locate libgomp. This is only required for parallel mode.
 set v3-libgomp 0
 set libgompdir [lookfor_file $blddir/../libgomp .libs/libgomp.$shlib_ext]