public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libstdc++/67408] New: <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types
@ 2015-08-31 11:29 sebastian.huber@embedded-brains.de
  2015-09-01 14:49 ` [Bug libstdc++/67408] " redi at gcc dot gnu.org
                   ` (10 more replies)
  0 siblings, 11 replies; 12+ messages in thread
From: sebastian.huber@embedded-brains.de @ 2015-08-31 11:29 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67408

            Bug ID: 67408
           Summary: <mutex> assumes that __gthread_mutex_t
                    and__gthread_recursive_mutex_t are the same types
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: sebastian.huber@embedded-brains.de
  Target Milestone: ---

The problem is in in:

[...]
#if _GTHREAD_USE_MUTEX_TIMEDLOCK
  template<typename _Derived>
    class __timed_mutex_impl
    {
[...]
          auto __mutex = static_cast<_Derived*>(this)->native_handle();
          return !__gthread_mutex_timedlock(__mutex, &__ts);

Here I get this for example:

In file included from
libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:26:0:
libstdc++-v3/include/mutex: In instantiation of 'bool
std::__timed_mutex_impl<_Derived>::_M_try_lock_until(const
std::chrono::time_point<std::chrono::_V2::system_clock, _Duration>&) [with
_Duration = std::chrono::duration<long long int, std::ratio<1ll, 1000000000ll>
>; _Derived = std::recursive_timed_mutex]':
libstdc++-v3/include/mutex:242:55:   required from 'bool
std::__timed_mutex_impl<_Derived>::_M_try_lock_until(const
std::chrono::time_point<_Clock, _Duration>&) [with _Clock =
std::chrono::_V2::steady_clock; _Duration = std::chrono::duration<long long
int, std::ratio<1ll, 1000000000ll> >; _Derived = std::recursive_timed_mutex]'
libstdc++-v3/include/mutex:217:55:   required from 'bool
std::__timed_mutex_impl<_Derived>::_M_try_lock_for(const
std::chrono::duration<_Rep, _Period>&) [with _Rep = long long int; _Period =
std::ratio<1ll>; _Derived = std::recursive_timed_mutex]'
libstdc++-v3/include/mutex:332:39:   required from 'bool
std::recursive_timed_mutex::try_lock_for(const std::chrono::duration<_Rep1,
_Period1>&) [with _Rep = long long int; _Period = std::ratio<1ll>]'
/home/EB/sebastian_h/archive/gcc-git/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:39:54:
  required from here
libstdc++-v3/include/mutex:234:37: error: cannot convert
'_Mutex_recursive_Control*' to '__gthread_mutex_t* {aka _Mutex_Control*}' for
argument '1' to 'int __gthread_mutex_timedlock(__gthread_mutex_t*, const
__gthread_time_t*)'
    return !__gthread_mutex_timedlock(__mutex, &__ts);
                                     ^


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

* [Bug libstdc++/67408] <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types
  2015-08-31 11:29 [Bug libstdc++/67408] New: <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types sebastian.huber@embedded-brains.de
@ 2015-09-01 14:49 ` redi at gcc dot gnu.org
  2015-09-01 14:50 ` redi at gcc dot gnu.org
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: redi at gcc dot gnu.org @ 2015-09-01 14:49 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67408

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2015-09-01
           Assignee|unassigned at gcc dot gnu.org      |redi at gcc dot gnu.org
     Ever confirmed|0                           |1


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

* [Bug libstdc++/67408] <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types
  2015-08-31 11:29 [Bug libstdc++/67408] New: <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types sebastian.huber@embedded-brains.de
  2015-09-01 14:49 ` [Bug libstdc++/67408] " redi at gcc dot gnu.org
@ 2015-09-01 14:50 ` redi at gcc dot gnu.org
  2015-09-01 15:18 ` redi at gcc dot gnu.org
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: redi at gcc dot gnu.org @ 2015-09-01 14:50 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67408

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
I didn't think that code was usable on non-POSIX systems, and for POSIX they
are the same type. I'll see what I can do about it.


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

* [Bug libstdc++/67408] <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types
  2015-08-31 11:29 [Bug libstdc++/67408] New: <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types sebastian.huber@embedded-brains.de
  2015-09-01 14:49 ` [Bug libstdc++/67408] " redi at gcc dot gnu.org
  2015-09-01 14:50 ` redi at gcc dot gnu.org
@ 2015-09-01 15:18 ` redi at gcc dot gnu.org
  2015-09-01 15:22 ` redi at gcc dot gnu.org
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: redi at gcc dot gnu.org @ 2015-09-01 15:18 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67408

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Created attachment 36276
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=36276&action=edit
Handle recursive mutexes with different types.

Does this work for your target?


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

* [Bug libstdc++/67408] <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types
  2015-08-31 11:29 [Bug libstdc++/67408] New: <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types sebastian.huber@embedded-brains.de
                   ` (2 preceding siblings ...)
  2015-09-01 15:18 ` redi at gcc dot gnu.org
@ 2015-09-01 15:22 ` redi at gcc dot gnu.org
  2015-09-01 15:37 ` sebastian.huber@embedded-brains.de
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: redi at gcc dot gnu.org @ 2015-09-01 15:22 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67408

--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Created attachment 36277
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=36277&action=edit
Handle recursive mutexes with different types.

Or this, which is probably easier on the compiler.


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

* [Bug libstdc++/67408] <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types
  2015-08-31 11:29 [Bug libstdc++/67408] New: <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types sebastian.huber@embedded-brains.de
                   ` (3 preceding siblings ...)
  2015-09-01 15:22 ` redi at gcc dot gnu.org
@ 2015-09-01 15:37 ` sebastian.huber@embedded-brains.de
  2015-09-01 15:39 ` redi at gcc dot gnu.org
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: sebastian.huber@embedded-brains.de @ 2015-09-01 15:37 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67408

--- Comment #5 from Sebastian Huber <sebastian.huber@embedded-brains.de> ---
(In reply to Sebastian Huber from comment #4) 
> I think the your second version doesn't work in case the types are equal, it
> looks similar to my first attempt to fix this which didn't work on Linux.

Please ignore this comment, you use different second parameter types.


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

* [Bug libstdc++/67408] <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types
  2015-08-31 11:29 [Bug libstdc++/67408] New: <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types sebastian.huber@embedded-brains.de
                   ` (4 preceding siblings ...)
  2015-09-01 15:37 ` sebastian.huber@embedded-brains.de
@ 2015-09-01 15:39 ` redi at gcc dot gnu.org
  2015-09-02  8:43 ` sebastian.huber@embedded-brains.de
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: redi at gcc dot gnu.org @ 2015-09-01 15:39 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67408

--- Comment #6 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Sebastian Huber from comment #4)
> Sorry, I should have linked my patch:
> 
> https://gcc.gnu.org/ml/gcc-patches/2015-09/msg00028.html

AH yes, that would work too, and doesn't require the compiler to do any
overload resolution.

N.B. all libstdc++ patches need to be CC'd to the libstdc++ list, I don't read
gcc-patches.

> I think the your second version doesn't work in case the types are equal, it
> looks similar to my first attempt to fix this which didn't work on Linux.

It works fine, because the second overload is a worse overload because it
requires a conversion to void, so when the types are equal the first overload
is lways used.

When the types are not equal the first overload is not viable at all for
recursive mutexes, so the second is used, and the second argument is cast back
to the __gthread_time_t type.


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

* [Bug libstdc++/67408] <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types
  2015-08-31 11:29 [Bug libstdc++/67408] New: <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types sebastian.huber@embedded-brains.de
                   ` (5 preceding siblings ...)
  2015-09-01 15:39 ` redi at gcc dot gnu.org
@ 2015-09-02  8:43 ` sebastian.huber@embedded-brains.de
  2015-09-02 10:16 ` redi at gcc dot gnu.org
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: sebastian.huber@embedded-brains.de @ 2015-09-02  8:43 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67408

--- Comment #7 from Sebastian Huber <sebastian.huber@embedded-brains.de> ---
(In reply to Jonathan Wakely from comment #6)
> (In reply to Sebastian Huber from comment #4)
> > Sorry, I should have linked my patch:
> > 
> > https://gcc.gnu.org/ml/gcc-patches/2015-09/msg00028.html
> 
> AH yes, that would work too, and doesn't require the compiler to do any
> overload resolution.
> 
> N.B. all libstdc++ patches need to be CC'd to the libstdc++ list, I don't
> read gcc-patches.

I tested my patch on Linux, and it seems to work fine. I guess the pretty
printer failures are not related to <mutex> since they are produced by gdb.
Should I test your patches as well? My C++ knowledge is not good enough to
judge which solution is better.

Native configuration is x86_64-pc-linux-gnu

                === libstdc++ tests ===

Schedule of variations:
    unix

Running target unix
Using /usr/share/dejagnu/baseboards/unix.exp as board description file for
target.
Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
Using
/home/EB/sebastian_h/archive/gcc-git/libstdc++-v3/testsuite/config/default.exp
as tool-and-target-specific interface file.
Running
/home/EB/sebastian_h/archive/gcc-git/libstdc++-v3/testsuite/libstdc++-abi/abi.exp
...
Running
/home/EB/sebastian_h/archive/gcc-git/libstdc++-v3/testsuite/libstdc++-dg/conformance.exp
...
Running
/home/EB/sebastian_h/archive/gcc-git/libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp
...
FAIL: libstdc++-prettyprinters/48362.cc print t1
FAIL: libstdc++-prettyprinters/48362.cc print t2
FAIL: libstdc++-prettyprinters/cxx11.cc print efl
FAIL: libstdc++-prettyprinters/cxx11.cc print refl
FAIL: libstdc++-prettyprinters/cxx11.cc print fl
FAIL: libstdc++-prettyprinters/cxx11.cc print rfl
FAIL: libstdc++-prettyprinters/cxx11.cc print eum
FAIL: libstdc++-prettyprinters/cxx11.cc print reum
FAIL: libstdc++-prettyprinters/cxx11.cc print eumm
FAIL: libstdc++-prettyprinters/cxx11.cc print reumm
FAIL: libstdc++-prettyprinters/cxx11.cc print eus
FAIL: libstdc++-prettyprinters/cxx11.cc print reus
FAIL: libstdc++-prettyprinters/cxx11.cc print eums
FAIL: libstdc++-prettyprinters/cxx11.cc print reums
FAIL: libstdc++-prettyprinters/cxx11.cc print uom
FAIL: libstdc++-prettyprinters/cxx11.cc print ruom
FAIL: libstdc++-prettyprinters/cxx11.cc print uomm
FAIL: libstdc++-prettyprinters/cxx11.cc print ruomm
FAIL: libstdc++-prettyprinters/debug.cc print str
FAIL: libstdc++-prettyprinters/debug.cc print bs
FAIL: libstdc++-prettyprinters/debug.cc print deq
FAIL: libstdc++-prettyprinters/debug.cc print deqiter
FAIL: libstdc++-prettyprinters/debug.cc print lst
FAIL: libstdc++-prettyprinters/debug.cc print lstiter
FAIL: libstdc++-prettyprinters/debug.cc print lstciter
FAIL: libstdc++-prettyprinters/debug.cc print mp
FAIL: libstdc++-prettyprinters/debug.cc print mpiter
FAIL: libstdc++-prettyprinters/debug.cc print sp
FAIL: libstdc++-prettyprinters/debug.cc print spciter
FAIL: libstdc++-prettyprinters/debug.cc print sll
FAIL: libstdc++-prettyprinters/debug.cc print slliter
FAIL: libstdc++-prettyprinters/libfundts.cc print str
FAIL: libstdc++-prettyprinters/libfundts.cc print o
FAIL: libstdc++-prettyprinters/libfundts.cc print ob
FAIL: libstdc++-prettyprinters/libfundts.cc print oi
FAIL: libstdc++-prettyprinters/libfundts.cc print op
FAIL: libstdc++-prettyprinters/libfundts.cc print om
FAIL: libstdc++-prettyprinters/libfundts.cc print os
FAIL: libstdc++-prettyprinters/libfundts.cc print a
FAIL: libstdc++-prettyprinters/libfundts.cc print ab
FAIL: libstdc++-prettyprinters/libfundts.cc print ai
FAIL: libstdc++-prettyprinters/libfundts.cc print ap
FAIL: libstdc++-prettyprinters/libfundts.cc print as
FAIL: libstdc++-prettyprinters/libfundts.cc print as2
FAIL: libstdc++-prettyprinters/libfundts.cc print am
FAIL: libstdc++-prettyprinters/shared_ptr.cc print esp
FAIL: libstdc++-prettyprinters/shared_ptr.cc print ewp1
FAIL: libstdc++-prettyprinters/shared_ptr.cc print ewp2
FAIL: libstdc++-prettyprinters/shared_ptr.cc print sp1
FAIL: libstdc++-prettyprinters/shared_ptr.cc print wp1
FAIL: libstdc++-prettyprinters/shared_ptr.cc print wp2
FAIL: libstdc++-prettyprinters/simple.cc print str
FAIL: libstdc++-prettyprinters/simple.cc print bs
FAIL: libstdc++-prettyprinters/simple.cc print deq
FAIL: libstdc++-prettyprinters/simple.cc print deqiter
FAIL: libstdc++-prettyprinters/simple.cc print lst
FAIL: libstdc++-prettyprinters/simple.cc print lstiter
FAIL: libstdc++-prettyprinters/simple.cc print lstciter
FAIL: libstdc++-prettyprinters/simple.cc print mp
FAIL: libstdc++-prettyprinters/simple.cc print mpiter
FAIL: libstdc++-prettyprinters/simple.cc print sp
FAIL: libstdc++-prettyprinters/simple.cc print spciter
FAIL: libstdc++-prettyprinters/simple.cc print sll
FAIL: libstdc++-prettyprinters/simple.cc print slliter
FAIL: libstdc++-prettyprinters/simple11.cc print str
FAIL: libstdc++-prettyprinters/simple11.cc print bs
FAIL: libstdc++-prettyprinters/simple11.cc print deq
FAIL: libstdc++-prettyprinters/simple11.cc print deqiter
FAIL: libstdc++-prettyprinters/simple11.cc print lst
FAIL: libstdc++-prettyprinters/simple11.cc print lstiter
FAIL: libstdc++-prettyprinters/simple11.cc print lstciter
FAIL: libstdc++-prettyprinters/simple11.cc print mp
FAIL: libstdc++-prettyprinters/simple11.cc print mpiter
FAIL: libstdc++-prettyprinters/simple11.cc print sp
FAIL: libstdc++-prettyprinters/simple11.cc print spciter
FAIL: libstdc++-prettyprinters/simple11.cc print sll
FAIL: libstdc++-prettyprinters/simple11.cc print slliter
FAIL: libstdc++-prettyprinters/tr1.cc print eum
FAIL: libstdc++-prettyprinters/tr1.cc print eumm
FAIL: libstdc++-prettyprinters/tr1.cc print eus
FAIL: libstdc++-prettyprinters/tr1.cc print eums
FAIL: libstdc++-prettyprinters/tr1.cc print uom
FAIL: libstdc++-prettyprinters/tr1.cc print uomm
FAIL: libstdc++-prettyprinters/tr1.cc print uos
FAIL: libstdc++-prettyprinters/tr1.cc print uoms
FAIL: libstdc++-prettyprinters/whatis.cc whatis string_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis ios_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis streambuf_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis istream_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis ostream_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis iostream_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis stringbuf_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis istringstream_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis ostringstream_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis stringstream_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis filebuf_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis ifstream_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis ofstream_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis fstream_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis streampos_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis regex_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis csub_match_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis ssub_match_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis cmatch_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis smatch_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis cregex_iterator_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis sregex_iterator_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis cregex_token_iterator_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis sregex_token_iterator_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis u16string_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis u32string_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis minstd_rand0_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis minstd_rand_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis mt19937_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis mt19937_64_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis ranlux24_base_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis ranlux48_base_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis ranlux24_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis ranlux48_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis knuth_b_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis seq1_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis seq2_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis assoc1_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis assoc2_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis unord1_holder
FAIL: libstdc++-prettyprinters/whatis.cc whatis unord2_holder
Running
/home/EB/sebastian_h/archive/gcc-git/libstdc++-v3/testsuite/libstdc++-xmethods/xmethods.exp
...

                === libstdc++ Summary ===

# of expected passes            10718
# of unexpected failures        126
# of expected failures          66
# of unsupported tests          232


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

* [Bug libstdc++/67408] <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types
  2015-08-31 11:29 [Bug libstdc++/67408] New: <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types sebastian.huber@embedded-brains.de
                   ` (6 preceding siblings ...)
  2015-09-02  8:43 ` sebastian.huber@embedded-brains.de
@ 2015-09-02 10:16 ` redi at gcc dot gnu.org
  2015-09-02 10:45 ` sebastian.huber@embedded-brains.de
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: redi at gcc dot gnu.org @ 2015-09-02 10:16 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67408

--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> ---
There's no need to test on linux, I can do that myself. If it works on your
non-pthreads target I'll commit your patch.


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

* [Bug libstdc++/67408] <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types
  2015-08-31 11:29 [Bug libstdc++/67408] New: <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types sebastian.huber@embedded-brains.de
                   ` (7 preceding siblings ...)
  2015-09-02 10:16 ` redi at gcc dot gnu.org
@ 2015-09-02 10:45 ` sebastian.huber@embedded-brains.de
  2015-09-02 10:51 ` redi at gcc dot gnu.org
  2015-09-02 10:54 ` redi at gcc dot gnu.org
  10 siblings, 0 replies; 12+ messages in thread
From: sebastian.huber@embedded-brains.de @ 2015-09-02 10:45 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67408

--- Comment #9 from Sebastian Huber <sebastian.huber@embedded-brains.de> ---
(In reply to Jonathan Wakely from comment #8)
> There's no need to test on linux, I can do that myself. If it works on your
> non-pthreads target I'll commit your patch.

Here it works fine:

https://lists.rtems.org/pipermail/devel/2015-September/012445.html


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

* [Bug libstdc++/67408] <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types
  2015-08-31 11:29 [Bug libstdc++/67408] New: <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types sebastian.huber@embedded-brains.de
                   ` (8 preceding siblings ...)
  2015-09-02 10:45 ` sebastian.huber@embedded-brains.de
@ 2015-09-02 10:51 ` redi at gcc dot gnu.org
  2015-09-02 10:54 ` redi at gcc dot gnu.org
  10 siblings, 0 replies; 12+ messages in thread
From: redi at gcc dot gnu.org @ 2015-09-02 10:51 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67408

--- Comment #10 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Author: redi
Date: Wed Sep  2 10:51:14 2015
New Revision: 227400

URL: https://gcc.gnu.org/viewcvs?rev=227400&root=gcc&view=rev
Log:
2015-09-02  Sebastian Huber  <sebastian.huber@embedded-brains.de>

        PR libstdc++/67408
        * include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Use
        _Derived::_M_timedlock().
        (timed_mutex): Add _M_timedlock() and make base class a friend.
        (recursive_timed_mutex): Likewise.

Modified:
    trunk/libstdc++-v3/ChangeLog
    trunk/libstdc++-v3/include/std/mutex


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

* [Bug libstdc++/67408] <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types
  2015-08-31 11:29 [Bug libstdc++/67408] New: <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types sebastian.huber@embedded-brains.de
                   ` (9 preceding siblings ...)
  2015-09-02 10:51 ` redi at gcc dot gnu.org
@ 2015-09-02 10:54 ` redi at gcc dot gnu.org
  10 siblings, 0 replies; 12+ messages in thread
From: redi at gcc dot gnu.org @ 2015-09-02 10:54 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67408

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|---                         |FIXED
   Target Milestone|---                         |6.0

--- Comment #11 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Thanks, fixed on trunk then. This could be safely backported if you need it in
the gcc-5 branch too.


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

end of thread, other threads:[~2015-09-02 10:54 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-31 11:29 [Bug libstdc++/67408] New: <mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types sebastian.huber@embedded-brains.de
2015-09-01 14:49 ` [Bug libstdc++/67408] " redi at gcc dot gnu.org
2015-09-01 14:50 ` redi at gcc dot gnu.org
2015-09-01 15:18 ` redi at gcc dot gnu.org
2015-09-01 15:22 ` redi at gcc dot gnu.org
2015-09-01 15:37 ` sebastian.huber@embedded-brains.de
2015-09-01 15:39 ` redi at gcc dot gnu.org
2015-09-02  8:43 ` sebastian.huber@embedded-brains.de
2015-09-02 10:16 ` redi at gcc dot gnu.org
2015-09-02 10:45 ` sebastian.huber@embedded-brains.de
2015-09-02 10:51 ` redi at gcc dot gnu.org
2015-09-02 10:54 ` redi at gcc dot gnu.org

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