On 2011/11/10 06:04 PM, Loïc Minier wrote:
When building u-boot for an ARMv5T platform (versatileqemu_config), the Ubuntu-packaged Linaro cross-toolchain isn't suitable because it only offers an ARMv7T2 libgcc. But I'd like the build to fail when that happens rather than silently generating an u-boot.bin which will trigger a SIGILL when it hits the first non-ARMv5T instruction.
I heard that gcc/ld are supposed to check this, but I'm not sure how it's supposed to work; perhaps the way u-boot does its final link prevents this from working properly?
I tried building u-boot as follows: make O=obj-broken \ CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm \ OPTFLAGS="-marm -march=armv5te" \ versatileqemu_config
make O=obj-broken \ CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm \ OPTFLAGS="-marm -march=armv5te" \ -j2
I'd assume the Ubuntu-packaged toolchain probably doesn't have a ARMv5 multilib? You could either expand the toolchain configuration and rebuild, or more simply, use a CodeSourcery toolchain. Our default multilib is ARMv5TE.
If you truly mean v5T and not v5TE (I can't really tell from the inconsistency between your description and the listed options above), then you should use -march=armv4t, we ship v4T libraries too.
Chung-Lin