I've upgraded my arm-gcc
toolchain to the latest one provided by ARM. I've been using older versions in a freestanding (baremetal) environment mainly on STM32F1xx for quite a while.
My linker script is custom but largely derived from the provided ones (either taken from the STMcube or newlib or the toolchain). It just links in the absolutely necessary from crti
/crtn
/certbegin
/crtend
, the init_array
s and the data relocation tables.
This used to work for ages, but now that I've updated the linker starts to complain. It seems that it pulls in register_tm_clones
that in turn references tm_clone_table
and a __TMC_END__
symbol, and I can literally only find breadcrumbs about what that is supposed to be... like hereand hereand here.
From what I understand it's about transactional memory. I grep
ed through the entire toolchain and I couldn't find any mention in anywhere (except for the binaries). Also, it seems to exist for quite some time (looking at the old SO posts), but why on earth does it start to bother only now?
How to get rid of that?