We have a boot loader (u-boot) that runs on powerpc platform (MPC8272)
If we cross-compile it using gcc 3.4.4 it works fine and it generates the following start and end of the functions

powerpc-linux-uclibc-gcc 3.4.4:

stwu  r1,-24(r1)
li r0,128
...
addi r1,r1,24
blr

That works fine. But if we recompile bootloader using 4.0.2 then we start getting problems. The code is kind of working but hangs very shortly in some place that has no affect on system.

And here is the code that 4.0.2 generates with the same options.

powerpc-linux-uclibc-gcc 4.0.2:

stwu  r1,-32(r1)
li r0,128
...
addi r1,r1,32
blr

Little difference in code but somehow it makes difference between working and not working. System.map files from 4.0.2 and 3.4.4 are very different - both of them looks ok but 4.0.2 version hangs very quickly in random place.

Here the options we use

powerpc-linux-uclibc-gcc -g -Os -fPIC -ffixed-r14 -meabi -fno-builtin -ffreestanding -nostdinc -isystem -pipe -fno-schedule-insns -fno-schedule-insns2 -ffixed-r2 -ffixed-r29 -mstring -mcpu=603e -Wall -Wstrict-prototypes

If somebody can suggest anything I will really appreciate. Can I make 4.0 "slightly more compatible" with 3.4?

Thank you

Reply via email to