libstdc++: Default to mutex-based atomics on RISC-V
authorPalmer Dabbelt <palmer@rivosinc.com>
Thu, 14 Apr 2022 16:22:58 +0000 (17:22 +0100)
committerJonathan Wakely <jwakely@redhat.com>
Thu, 14 Apr 2022 16:31:15 +0000 (17:31 +0100)
commit3fc22eedb033cbff1bf5a70c6a032d3c5ce2d867
treeb13889f1043ceeb1463917dfb1d26446dbd46ec0
parent832fcbbc7311c706f81e85043b5721e5f16b0a16
libstdc++: Default to mutex-based atomics on RISC-V

The RISC-V port requires libatomic to be linked in order to resolve
various atomic functions, which results in builds that have
"--with-libstdcxx-lock-policy=auto" defaulting to mutex-based locks.
Changing this to direct atomics breaks the ABI, this forces the auto
detection mutex-based atomics on RISC-V in order to avoid a silent ABI
break for users.

See Bug 84568 for more discussion.  In the long run there may be a way
to get the higher-performance atomics without an ABI flag day, but
that's going to be a much more complicated operation.  We don't even
have support for the inline atomics yet, but given that some folks have
been discussing hacks to make these libatomic routines appear implicitly
it seems prudent to just turn off the automatic detection for RISC-V.

libstdc++-v3/ChangeLog:

* acinclude.m4 (GLIBCXX_ENABLE_LOCK_POLICY): Force auto to mutex
for RISC-V.
* configure: Regenerate.
libstdc++-v3/acinclude.m4
libstdc++-v3/configure