https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120527
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- Also the fact that libc++ is using those APIs probably means they can't be removed now. Does the same version of libstdc++.dylib need to work for both cases? There's already a generic implementation in terms of mutexes and condition variables that works on Darwin today. But libstdc++ chooses the implementation at build time and then it's fixed. If you need a single dylib that supports old and new Darwin we'll need to dynamically check for __ulock_wait and if it's not available, fallback to the portable code. That would need some work.