On Thu, 7 Oct 2010, Andrew Stubbs wrote:

> There's another issue here: using a Linux user-space compiler to build for
> bare-metal is a bad plan. libgcc is built assuming that system calls and
> exceptions etc. work as they do in Linux user-mode. The Linux kernel is built
> with a user-space compiler for convenience, but a) the kernel is always
> configured for the same hardware as the user-space, and b) it has it's own
> versions of (at least some of) the libgcc routines, customized for it's own
> environment.

The kernel does indeed explicitly avoid any linkage with libgcc.a.  
It is self contained and provide its own set of equivalent functions 
typically carried by libgcc.a, and explicitly _exclude_ some other 
functions (such as 64-bit divisions) to ensure they're never used in the 
kernel.

> I strongly suggest you use a bare-metal compiler configured for the right
> architecture(s), such as CodeSourcery's ARM EABI Lite toolchain.

I think that a perfectly valid alternative is for the bare-metal target 
program to provide its own support library as the kernel does.  So if 
U-Boot already comes with its own libgcc.a equivalent, then it should 
just be used.


Nicolas

_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to