[PATCH v3] libstdc++: Improve std::lock algorithm

Jonathan Wakely jwakely@redhat.com
Wed Jun 23 09:17:35 GMT 2021


On Wed, 23 Jun 2021 at 08:21, Christophe Lyon wrote:
> This patch causes GCC build failures for bare-metal targets
> (aarch64-elf, arm-eabi). For instance on arm-eabi, I'm seeing:
>
> In file included from
> /tmp/1229695_7.tmpdir/aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-eabi/gcc3/arm-none-eabi/libstdc++-v3/include/future:38,
>                  from
> /tmp/1229695_7.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/libstdc++-v3/include/precompiled/stdc++.h:105:
> /tmp/1229695_7.tmpdir/aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-eabi/gcc3/arm-none-eabi/libstdc++-v3/include/mutex:
> In function 'int std::__detail::__try_lock_impl(_Lockable&)':
> /tmp/1229695_7.tmpdir/aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-eabi/gcc3/arm-none-eabi/libstdc++-v3/include/mutex:522:53:
> error: expected primary-expression before ',' token
>   522 |         if (unique_lock<_Lockable> __lock{__lockable, try_to_lock})
>       |                                                     ^
> In file included from
> /tmp/1229695_7.tmpdir/aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-eabi/gcc3/arm-none-eabi/libstdc++-v3/include/future:38,
>                  from
> /tmp/1229695_7.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/libstdc++-v3/include/precompiled/stdc++.h:105:
> /tmp/1229695_7.tmpdir/aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-eabi/gcc3/arm-none-eabi/libstdc++-v3/include/mutex:
> In function 'int std::__detail::__try_lock_impl(_Lockable&)':
> /tmp/1229695_7.tmpdir/aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-eabi/gcc3/arm-none-eabi/libstdc++-v3/include/mutex:522:53:
> error: expected primary-expression before ',' token
>   522 |         if (unique_lock<_Lockable> __lock{__lockable, try_to_lock})
>       |                                                     ^
> make[4]: *** [Makefile:1862:
> arm-none-eabi/bits/stdc++.h.gch/O2ggnu++0x.gch] Error 1

Sigh, __lockable is a macro in newlib:

newlib/libc/include/sys/cdefs.h:#define __lockable
__lock_annotate(lockable)

I'll change the name.



More information about the Gcc-patches mailing list