https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63829
--- Comment #6 from Richard Earnshaw <rearnsha at gcc dot gnu.org> --- arm linux code should always be using the _S_atomic sequences. When the processor doesn't have the required instructions, kernel helper routines will be used. This ensures that code is forwards compatible to later architectures. It's a really bad idea for the headers used in user code to be changing this decision dynamically.