[gccsdk] RePackaging using trunk GCC instead of 4.1.2
leenoar at sky.com
Sun Jan 5 06:42:40 PST 2014
On 03/01/14 16:42, John Tytgat wrote:
> In message <52C6CC05.8090707 at sky.com>
> Lee Noar <leenoar at sky.com> wrote:
>> I've been using trunk for some time for development and it seems
>> stable to me. The only problem I've had is a crash in Cairo which
>> I traced to file cairo-1.12.16/src/cairo-boxes-intersect.c, function
>> sweep_line_init(), GCC 4.7.4 produced this code snippet:
>> ldr r0, [r0, #-3936]
>> ldr r7, [r0, #-3940]
>> str r9, [r7, r0, asl #2]
>> The first ldr corrupts r0 which is still required by the second ldr.
>> I was able to work around it by declaring the function noinline.
>> This must be an extremely obscure bug, because this is the only time
>> I've seen it and I've compiled and run a fair bit of code with this
>> compiler. Unfortunately, I wouldn't have a clue how to fix it.
> One way is to figure out if this is still triggerable using arm-unknown-eabi
> target using the same compiler sources (change TARGET in Makefile).
> If so, then you can try later versions of the compiler and see if/when
> it is solved. If so, it helps retrieving the right patch.
I've just tried compiling it on a Raspberry PI (Linux) which has GCC
4.6.3, but that has more registers at its disposal (it can use r10,
and r11 as general registers), so its use of the stack and code
produced is slightly different. This code sequence isn't present,
but I can't say that RISC OS GCC 4.6.3 wouldn't generate it.
More information about the gcc