Building for cortex-m3

Simon Wright simon@pushface.org
Mon Apr 18 00:53:00 GMT 2011


I'm a newbie at Newlib, so please pardon any stupidities.

I've been trying to build newlib-1.19.0 with GCC-4.6.0 for use with a bare cortex-m3 (under qemu at the moment).

The configurations I've tried include as basis

$ ../newlib-1.19.0/configure  --target=arm-none-eabi  --disable-newlib-supplied-syscalls

and with just this I see that libgloss/arm/crt0.S and newlib/libc/sys/arm/crt0.S both compile _mainCRTStartup in ARM mode; which (I think) isn't going to work on the M3. They define FUNC_START as

#if defined(__thumb2__)
	.syntax unified
	.thumb
.macro FUNC_START name
	.global	\name
	.thumb_func
\name:
.endm
#else
	.code 32
.macro FUNC_START name
	.global	\name
\name:
.endm
#endif

so what happens if just __thumb__ is defined? (actually, I'm not at all clear whether it is or not; is it a GCC builtin?).

I've gone to my build directory and compiled arm-none-eabi/thumb/newlib/libc/sys/arm/crt0.o (which is suppressed in the Makefile). I copied it to $prefix/arm-none-eabi//lib/thumb/crt0.o with no effect, then to $prefix/arm-none-eabi//lib/crt0.o which was used in my build. (The fact that I'm now getting a usage fault is, I think, progress!) Shouldn't crt0.o be part of the multilib scheme?

TIA for any suggestions/pointers/...

--S



More information about the Newlib mailing list