------- Comment #8 from sebastian dot huber at embedded-brains dot de
2010-05-12 12:03 -------
A summary follows. Broken means bdbuf.i generates an invalid stack frame usage
sequence in a function epilogue. Works means that the corresponding area is
valid.
Flags: -march=armv5t -mthumb -Os
Broken:
GCC 4.3.2 20080827
GCC 4.4.4 20100429
GCC 4.5.0 20100414
Works:
GCC 4.2.4
Flags: -march=armv7 -mthumb -Os
Works:
GCC 4.5.0 20100414
Flags: -march=armv5t -mthumb -O2
Suspicious:
GCC 4.5.0 20100414
Suspicious means that the epilogue sequence is this:
.L577:
mov sp, r7
add sp, sp, #36
mov r0, r4
/*
* Here we don't have a problem since r0 comes from r4
* and not from the stack frame. Is this always the case?
*/
@ sp needed for prologue
pop {r2, r3, r4, r5}
mov r8, r2
mov r9, r3
mov sl, r4
mov fp, r5
pop {r4, r5, r6, r7, pc}
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44091