[Buildroot] [PATCH] gcc: fix uclibc build with gcc-8 for xtensa

Romain Naour romain.naour at gmail.com
Mon Jun 25 20:50:49 UTC 2018


Hi Max,

Le 19/06/2018 à 22:27, Max Filippov a écrit :
> gcc-8.1 for xtensa miscompiles uClibc dynamic linker due to gcc PR
> target/65416. The build completes successfully, but the binary is
> non-functional because the following fragment in the _dl_get_ready_to_run
> in ld-uClibc.so overwrites register spill area on stack causing register
> corruption in the previous call frame and a subsequent crash:
> 
>     419f:       f0c1b2          addi    a11, a1, -16
>     41a2:       1ba9            s32i.n  a10, a11, 4
>     41a4:       0bc9            s32i.n  a12, a11, 0
>     41a6:       5127f2          l32i    a15, a7, 0x144
>     41a9:       1765b2          s32i    a11, a5, 92
>     41ac:       4e2782          l32i    a8, a7, 0x138
>     41af:       146af2          s32i    a15, a10, 80
>     41b2:       001b10          movsp   a1, a11
> 
> The crash terminates the init process and causes kernel panic.
> The fix prevents reordering of movsp opcode and any access to the stack
> frame memory and is applicable to all existing gcc versions..
> 

Thanks for the patch!

Do you know what changed in gcc 8.0 that trigger this issue ?

I tried to use git bisect to find the culprit commit, the last working gcc
commit is 5266910fed23d6d7f101a878dd8a28d178697ec5 (2017-06-28) and this "first"
broken commit is 7051d2393d15d0d1b848768a6f2767c75aa4b5cd (2017-07-06) but I
gave up due to lack of time...

Best regards,
Romain



More information about the buildroot mailing list