Hi,
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.
Before bothering the list, I scoured the gzipped archive back through 2013, and there is little mention of any problems OR successes with armv6. I am wondering if armv6 is supported, and if so, what is the secret sauce ABE command line to build successfully for the 1136J-S.
Some of the builds I tried were missing tarball components, others fail later on such as the one below that gets through building gcc and bombs building the eabi.
-------------------- 'abe.sh -target arm-linux-gnueabi -build all -set cpu=arm1136j-s' produces the following, see further below for the gcc version data:
arm-linux-gnueabi-gcc ../sysdeps/arm/aeabi_memclr.c -c -std=gnu99
-fgnu89-inline -O2 -Wall -Werror -Winline -Wno-error=undef -Wundef
-Wwrite-strings -fmerge-all-constants -frounding-math -g
-Wstrict-prototypes -I../include
-I/home/billd/_build/builds/x86_64-unknown-linux-gnu/arm-linux-gnueabi/glibc.git~release-2.21-master/csu
-I/home/billd/_build/builds/x86_64-unknown-linux-gnu/arm-linux-gnueabi/glibc.git~release-2.21-master
-I../sysdeps/unix/sysv/linux/arm -I../sysdeps/arm/nptl
-I../sysdeps/unix/sysv/linux/include -I../sysdeps/unix/sysv/linux
-I../sysdeps/nptl -I../sysdeps/pthread -I../sysdeps/gnu
-I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix/arm
-I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/arm/armv6
-I../sysdeps/arm/include -I../sysdeps/arm -I../sysdeps/wordsize-32
-I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754/dbl-64
-I../sysdeps/ieee754 -I../sysdeps/generic -I.. -I../libio -I. -nostdinc
-isystem
/home/billd/_build/builds/destdir/x86_64-unknown-linux-gnu/lib/gcc/arm-linux-gnueabi/5.1.1/include
-isystem
/home/billd/_build/builds/destdir/x86_64-unknown-linux-gnu/lib/gcc/arm-linux-gnueabi/5.1.1/include-fixed
-isystem /home/billd/_build/sysroots/arm-linux-gnueabi/usr/include
-D_LIBC_REENTRANT -include
/home/billd/_build/builds/x86_64-unknown-linux-gnu/arm-linux-gnueabi/glibc.git~release-2.21-master/libc-modules.h
-DMODULE_NAME=libc -include ../include/libc-symbols.h -o
/home/billd/_build/builds/x86_64-unknown-linux-gnu/arm-linux-gnueabi/glibc.git~release-2.21-master/csu/aeabi_memclr.o
-MD -MP -MF
/home/billd/_build/builds/x86_64-unknown-linux-gnu/arm-linux-gnueabi/glibc.git~release-2.21-master/csu/aeabi_memclr.o.dt
-MT
/home/billd/_build/builds/x86_64-unknown-linux-gnu/arm-linux-gnueabi/glibc.git~release-2.21-master/csu/aeabi_memclr.o
/tmp/ccTT8UgL.s: Assembler messages:
/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
make[2]: ***
[/home/billd/_build/builds/x86_64-unknown-linux-gnu/arm-linux-gnueabi/glibc.git~release-2.21-master/csu/libc-start.o]
Error 1
--- here is the gcc -v output for the build above. ----
./arm-linux-gnueabi-gcc -v
Using built-in specs.
COLLECT_GCC=./arm-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/home/billd/_build/builds/destdir/x86_64-unknown-linux-gnu/libexec/gcc/arm-linux-gnueabi/5.1.1/lto-wrapper
Target: arm-linux-gnueabi
Configured with:
'/home/billd/_build/snapshots/gcc.git~linaro-gcc-5-branch/configure'
SHELL=/bin/bash --with-bugurl=https://bugs.linaro.org
--with-mpc=/home/billd/_build/builds/destdir/x86_64-unknown-linux-gnu
--with-mpfr=/home/billd/_build/builds/destdir/x86_64-unknown-linux-gnu
--with-gmp=/home/billd/_build/builds/destdir/x86_64-unknown-linux-gnu
--with-gnu-as --with-gnu-ld --disable-libstdcxx-pch --disable-libmudflap
--with-cpu=arm1136j-s --with-cloog=no --with-ppl=no --with-isl=no
--disable-nls --enable-c99 --with-fpu=vfpv3-d16 --with-float=softfp
--with-mode=thumb --disable-multilib --enable-multiarch --disable-libssp
--disable-libquadmath --disable-threads --without-headers --with-newlib
--disable-libmudflap --disable-bootstrap --disable-decimal-float
--disable-libgomp --disable-libatomic --disable-libsanitizer
--disable-plugins --disable-libitm MAKEINFO=echo --enable-languages=c
--with-sysroot=/home/billd/_build/builds/sysroot-arm-linux-gnueabi
--disable-shared --with-glibc-version=2.18
--build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu
--target=arm-linux-gnueabi
--prefix=/home/billd/_build/builds/destdir/x86_64-unknown-linux-gnu
Thread model: single
gcc version 5.1.1 20150608 (Linaro GCC 5.1-2015.06-1~dev)
Since arm1136j-s does not support Thumb-2, you need to make sure that GCC is not configured with --with-mode=thumb.
I don't think there is currently a way to achieve this on the abe command line at present. However, you can work around the problem by removing each occurrence of --with-mode=thumb from config/gcc.conf.
Feel free to raise a bug on abe at http://bugs.linaro.org for this.
Charles
On 11 September 2015 at 18:54, Bill Davis billd@broadcom.com wrote:
Hi,
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.
Before bothering the list, I scoured the gzipped archive back through 2013, and there is little mention of any problems OR successes with armv6. I am wondering if armv6 is supported, and if so, what is the secret sauce ABE command line to build successfully for the 1136J-S.
Some of the builds I tried were missing tarball components, others fail later on such as the one below that gets through building gcc and bombs building the eabi.
‘abe.sh –target arm-linux-gnueabi –build all –set cpu=arm1136j-s’ produces the following, see further below for the gcc version data:
arm-linux-gnueabi-gcc ../sysdeps/arm/aeabi_memclr.c -c -std=gnu99
-fgnu89-inline -O2 -Wall -Werror -Winline -Wno-error=undef -Wundef
-Wwrite-strings -fmerge-all-constants -frounding-math -g
-Wstrict-prototypes -I../include
-I/home/billd/_build/builds/x86_64-unknown-linux-gnu/arm-linux-gnueabi/glibc.git~release-2.21-master/csu
-I/home/billd/_build/builds/x86_64-unknown-linux-gnu/arm-linux-gnueabi/glibc.git~release-2.21-master
-I../sysdeps/unix/sysv/linux/arm -I../sysdeps/arm/nptl
-I../sysdeps/unix/sysv/linux/include -I../sysdeps/unix/sysv/linux
-I../sysdeps/nptl -I../sysdeps/pthread -I../sysdeps/gnu
-I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix/arm
-I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/arm/armv6
-I../sysdeps/arm/include -I../sysdeps/arm -I../sysdeps/wordsize-32
-I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754/dbl-64
-I../sysdeps/ieee754 -I../sysdeps/generic -I.. -I../libio -I. -nostdinc
-isystem
/home/billd/_build/builds/destdir/x86_64-unknown-linux-gnu/lib/gcc/arm-linux-gnueabi/5.1.1/include
-isystem
/home/billd/_build/builds/destdir/x86_64-unknown-linux-gnu/lib/gcc/arm-linux-gnueabi/5.1.1/include-fixed
-isystem /home/billd/_build/sysroots/arm-linux-gnueabi/usr/include
-D_LIBC_REENTRANT -include
/home/billd/_build/builds/x86_64-unknown-linux-gnu/arm-linux-gnueabi/glibc.git~release-2.21-master/libc-modules.h
-DMODULE_NAME=libc -include ../include/libc-symbols.h -o
/home/billd/_build/builds/x86_64-unknown-linux-gnu/arm-linux-gnueabi/glibc.git~release-2.21-master/csu/aeabi_memclr.o
-MD -MP -MF
/home/billd/_build/builds/x86_64-unknown-linux-gnu/arm-linux-gnueabi/glibc.git~release-2.21-master/csu/aeabi_memclr.o.dt
-MT
/home/billd/_build/builds/x86_64-unknown-linux-gnu/arm-linux-gnueabi/glibc.git~release-2.21-master/csu/aeabi_memclr.o
/tmp/ccTT8UgL.s: Assembler messages:
/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
make[2]: ***
[/home/billd/_build/builds/x86_64-unknown-linux-gnu/arm-linux-gnueabi/glibc.git~release-2.21-master/csu/libc-start.o]
Error 1
--- here is the gcc –v output for the build above. ----
./arm-linux-gnueabi-gcc -v
Using built-in specs.
COLLECT_GCC=./arm-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/home/billd/_build/builds/destdir/x86_64-unknown-linux-gnu/libexec/gcc/arm-linux-gnueabi/5.1.1/lto-wrapper
Target: arm-linux-gnueabi
Configured with:
'/home/billd/_build/snapshots/gcc.git~linaro-gcc-5-branch/configure'
SHELL=/bin/bash --with-bugurl=https://bugs.linaro.org
--with-mpc=/home/billd/_build/builds/destdir/x86_64-unknown-linux-gnu
--with-mpfr=/home/billd/_build/builds/destdir/x86_64-unknown-linux-gnu
--with-gmp=/home/billd/_build/builds/destdir/x86_64-unknown-linux-gnu
--with-gnu-as --with-gnu-ld --disable-libstdcxx-pch --disable-libmudflap
--with-cpu=arm1136j-s --with-cloog=no --with-ppl=no --with-isl=no
--disable-nls --enable-c99 --with-fpu=vfpv3-d16 --with-float=softfp
--with-mode=thumb --disable-multilib --enable-multiarch --disable-libssp
--disable-libquadmath --disable-threads --without-headers --with-newlib
--disable-libmudflap --disable-bootstrap --disable-decimal-float
--disable-libgomp --disable-libatomic --disable-libsanitizer
--disable-plugins --disable-libitm MAKEINFO=echo --enable-languages=c
--with-sysroot=/home/billd/_build/builds/sysroot-arm-linux-gnueabi
--disable-shared --with-glibc-version=2.18
--build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu
--target=arm-linux-gnueabi
--prefix=/home/billd/_build/builds/destdir/x86_64-unknown-linux-gnu
Thread model: single
gcc version 5.1.1 20150608 (Linaro GCC 5.1-2015.06-1~dev)
linaro-toolchain mailing list linaro-toolchain@lists.linaro.org https://lists.linaro.org/mailman/listinfo/linaro-toolchain
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
Charles / Jim,
Removing --with-mode=thumb from the ABE gcc.conf does indeed solve my problem. Thank you! I went ahead and opened a ticket.
Best,
Bill Davis
-----Original Message----- From: Jim Wilson [mailto:jim.wilson@linaro.org] Sent: Friday, September 11, 2015 6:24 PM To: Bill Davis Cc: linaro-toolchain@lists.linaro.org Subject: Re: Building for armv6/ARM1136J-S using ABE
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
linaro-toolchain@lists.linaro.org