------- 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

Reply via email to