When static linking in ARM (like Mips) __tls_get_addr is defined by the library so we should not define it as a synthetic.
We also need to add exidx_start and exidx_end for the .ARM.exidx section as the static libc library startup code is expecting them to be defined by the default linker script for static linking on ARM when GNU ld is used.
Extract from arm-linux-gnueabihf-ld --static --verbose
PROVIDE_HIDDEN (__exidx_start = .);
.ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
PROVIDE_HIDDEN (__exidx_end = .);
There is still more work to do for static linking to work on ARM, there are problems with ifunc, TLS and unresolved weak references. I have patches ready for most of these.