Wrong crt0 pulled in with official arm-gcc toolchain?

Sven Pauli sven_pauli@gmx.de
Wed Jan 15 18:42:39 GMT 2025


Hi,

I've just recently upgraded my (fairly old) toolchain to the latest official one (arm-gnu-
toolchain-14.2.rel1-x86_64-arm-none-eabi) distributed by ARM.

It seems that for some reason now when linking it started to pull in `crt0.o` from gcc (./lib/
gcc/arm-none-eabi/...) instead of the one that comes with newlib (./arm-none-eabi/lib/...),
and that in turn expects various symbols to be defined, mainly related to transactional
memory (__TMC_END__ from .text.register_tm_clones and so on).

I haven't changed anything since the upgrade; command lines are pretty basic, just `-
mcpu=cortex-m3` and `--specs=nano.specs --specs=nosys.specs`. I'm using the `crti/crto/
crtbegin/crtend` that belongs to gcc (so I don't want to use `nostartfiles`) and I intended to
use the `crt0` from newlib, and I provide my own startup that relocates the data segment
and then defers to `_start`.

Now I am a bit clueless where to adjust something. Is this a gcc or a newlib or a user
issue..?

Many thanks and kind regards,
Sven
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://sourceware.org/pipermail/newlib/attachments/20250115/76bd8e91/attachment.htm>


More information about the Newlib mailing list