On Fri, Sep 11, 2015 at 10:54 AM, Bill Davis billd@broadcom.com wrote:
I’ve tried probably a dozen different ABE build command lines with various combinations of cpu/arch/tune on the latest tree and on the 2014.09 release and am unable to build for the armv6/1136J-S.
FYI there is a wiki page that talks about ABE https://wiki.linaro.org/ABE In particular, it mentions the "temporary" workaround needed to get files to download.
My experience is that ABE tends to work fine if you are using the same way as tcwg, and it can behave poorly if you are trying to use it a different way. tcwg doesn't build for armv6.
/tmp/ccTT8UgL.s:492: Error: lo register required -- `add pc,r3,#(0xffff0fc0-0xffff0fff)' /tmp/ccTT8UgL.s:490: Error: invalid immediate: -61441 is out of range
This is a glibc problem building csu/libc-start.c. It calls some atomic functions, and we end up in sysdeps/unix/sysv/linux/arm/bits/atomic.h. At the bottom, it has a definition for __arm_assisted_compare_and_exchange_val_32_acq. There is one for thumb2, and one for arm, but no definition for thumb1.
abe by default builds the compiler --with-mode=thumb. You are building for an armv6 part that does not have thumb2 support, so your compiler is emitting thumb1 code by default, which won't work. I don't think it is a good idea to try to build everything as thumb1 code. I would suggest disabling --with-mode=thumb in the gcc configure options.
I see that Charles Baylis has responded while I was writing this up, and explains that you have to edit abe/config/gcc.conf to git rid of the --with-mode=thumb option.
Jim