data abort compiling u-boot with GCC != 6.4


Federico Giovanardi
 

I'm getting a data-abort exception every time i access the FEC ethernet device from u-boot; it happens using tftp or just ping.
=> ping 172.31.4.2
Using FEC device
data abort
pc : [<4ffd769c>]          lr : [<4ffd8960>]
reloc pc : [<1782d69c>]    lr : [<1782e960>]
sp : 4f5a7d00  ip : 0000006a     fp : 4ffb427c
r10: 00000000  r9 : 4f5a7eb8     r8 : 4ffee74c
r7 : 00000001  r6 : 00000000     r5 : 0000002a  r4 : 4ffec94e
r3 : 14000045  r2 : 01041fac     r1 : 02041fac  r0 : 4ffec94e
Flags: nZCv  IRQs off  FIQs off  Mode SVC_32
Resetting CPU ...
With the same source everything works fine just switching the compiler.

I'm using u-boot 2016-07, almost not customized except for a pin used to keep the board up.
For now I've tested with:

arm-poky-linux-gnueabi-gcc 9.2   -> FAIL
arm-poky-linux-gnueabi-gcc 7.3   -> FAIL
arm-poky-linux-gnueabi-gcc 6.4   -> OK

all the toolchain are generated using yocto and are know to be working correctly.
U-boot is compiled with:

CROSS_COMPILE=/opt/poky-arag/2.2.1/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-
make mrproper
make ARCH=arm CROSS_COMPILE=$CROSS_COMPILE delta70_defconfig
make ARCH=arm CROSS_COMPILE=$CROSS_COMPILE
without environment variables affecting compilation, build host is arch linux just updated, I've tried also in an ubuntu 16.04 chroot
but with the same result.

Any clue?

Regards.
Federico Giovanardi


Max Krummenacher
 

Hi

Have a look here:
https://www.yoctoproject.org/pipermail/yocto/2018-March/040486.html

So either update your U-Boot to something newer, cherry-pick the mentioned commit from upstream U-
Boot or pin the compiler to gcc 6.4.

Max

Am Dienstag, den 17.03.2020, 10:28 -0700 schrieb Federico Giovanardi:

I'm getting a data-abort exception every time i access the FEC ethernet device from u-boot; it
happens using tftp or just ping.


=> ping 172.31.4.2
Using FEC device
data abort
pc : [<4ffd769c>] lr : [<4ffd8960>]
reloc pc : [<1782d69c>] lr : [<1782e960>]
sp : 4f5a7d00 ip : 0000006a fp : 4ffb427c
r10: 00000000 r9 : 4f5a7eb8 r8 : 4ffee74c
r7 : 00000001 r6 : 00000000 r5 : 0000002a r4 : 4ffec94e
r3 : 14000045 r2 : 01041fac r1 : 02041fac r0 : 4ffec94e
Flags: nZCv IRQs off FIQs off Mode SVC_32
Resetting CPU ...
With the same source everything works fine just switching the compiler.

I'm using u-boot 2016-07, almost not customized except for a pin used to keep the board up.
For now I've tested with:

arm-poky-linux-gnueabi-gcc 9.2 -> FAIL
arm-poky-linux-gnueabi-gcc 7.3 -> FAIL
arm-poky-linux-gnueabi-gcc 6.4 -> OK

all the toolchain are generated using yocto and are know to be working correctly.
U-boot is compiled with:


CROSS_COMPILE=/opt/poky-arag/2.2.1/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-
gnueabi/arm-poky-linux-gnueabi-

make mrproper
make ARCH=arm CROSS_COMPILE=$CROSS_COMPILE delta70_defconfig
make ARCH=arm CROSS_COMPILE=$CROSS_COMPILE
without environment variables affecting compilation, build host is arch linux just updated, I've
tried also in an ubuntu 16.04 chroot
but with the same result.

Any clue?

Regards.
Federico Giovanardi