FYI: I've verified that when building with GCC 10, outline atomics are correctly initialized on LSE machines. The ld.so ELF constructors eventually get run and initialize __aarch64_have_lse_atomics.
One minor improvement would be to document __aarch64_have_lse_atomics as interposable on the GCC side and define that directly in glibc, so that lse-init.o is not linked in anymore and __aarch64_have_lse_atomics can be initialized as soon as ld.so has the hwcap information. Thanks, Florian