Fix build of cxa_guard.cpp on configurations with _LIBCXXABI_HAS_NO_THREADS
cxa_guard_impl.h currently contains a forward declaration of two classes,
LibcppMutex and LibcppCondVar, whose definitions are guarded by
!defined(_LIBCXXABI_HAS_NO_THREADS). When this configuration is set, the
definitions are not seen, and the compiler emits an error when the
incomplete types are used.
I've refined the locations of the guards around these definitions to only the
spots where not having thread support matters, and have stubbed those
definitions with the expected return code.
We just need to make the types complete. They don't need a mock interface. (In fact they shouldn't have one).
How about this:
Ex: