I'm really sorry to have started this, but for completeness here is the rest of the story. The hypothetical scenario is a developer that maintains u-boot for multiple platforms. Using a codesourcery or eldk (from denx.de) toolchain one can use the appropriate -march= to get the right code from the compiler. Also the libgcc.a is ARM so all is well. Using a linaro toolchain using the same -march= you get the right code from the compiler but the result will get linked with a Thumb-2 libgcc.a and the resulting binary will not run on an older ARM. If however libgcc.a was ARM then it would just work. Again, I'm not saying this is a bug or even something for Linaro to care about. It just means that the Linaro toolchain is not something that this hypothetical u-boot maintainer would want to use as his/her one and only toolchain.
The naive magical solution would be to for the linker to understand the -march="old non Thumb-2 ARM" and flag an error when linking with a Thumb-2 libgcc.a. Even better would be for the toolchain to have multiple libgcc's and use the right one.
The answer is that the developer just needs to know that the libgcc in the Linaro toolchain is Thumb-2 so they must use the libgcc included in the u-boot source when building for old ARM targets.
Again, sorry for injecting this noise. My question is answered.
John
On Wed, Oct 6, 2010 at 6:41 AM, Loïc Minier loic.minier@linaro.org wrote:
On Tue, Oct 05, 2010, Steve Langasek wrote:
OOI, what are the U-Boot targets you're looking to build for that don't support ARMv7? A gcc multilib package for armel will be easy to implement but hard to maintain, and certainly none of the systems Linaro is targeting should require a pre-Thumb-2 U-Boot, so I'm very doubtful that the ongoing effort to maintain such a toolchain in Ubuntu is justified (unless we find that it becomes substantially easier with multiarch, I guess, but we're a ways away from that yet).
Isn't Thumb 2 the actual issue here? U-Boot is built with -marm; does it cause any issue to mix with our Thumb-2 libgcc?
-- Loďc Minier