On Thu, 2009-07-23 at 11:52 +0100, Dave Korn wrote:
> Danny Backx wrote:
> > On Thu, 2009-07-23 at 10:07 +0100, Dave Korn wrote:
> 
> > Kai Ruottu wrote :
> >> Comparing the output from some earlier working GCC with the gcc-4.4.0
> >> output would reveal if something was wrong in preparing inputs for
> >> the soft-float routines... Or maybe something was changed in the
> >> soft-float routines... What if you try a 'libgcc.a' taken from some
> >> earlier working GCC ?
> > 
> > Did that, see below. I think this means that the stuff in libgcc.a cause
> > the issue.
> 
>   Could this be related to old-vs-new EABI? 

What's old vs new EABI ?

An earlier search on eabi on the mailing list archive indicated that
this was ELF related. Did I draw the wrong conclusion ?

> Is the stack aligned to the same
> multiple on entry to main in both old and new executables?  The assembler code
> looked basically the same, except the stack frame size has changed and a lot
> of things that were aligned to an (odd/even) multiple of 8 may now be aligned
> to an (even/odd) multiple instead.

Hmm, not sure why you say that.

Again my ARM assembler knowledge is really too limited for this, but the 
difference
between float.S and ofloat.S (see the link in my earlier message) appears to 
match
the amount of registers pushed on the stack at the entry of main :

## ofloat.S (gcc 4.1) :
main:
        @ args = 0, pretend = 0, frame = 36
        @ frame_needed = 1, uses_anonymous_args = 0
        mov     ip, sp
        stmfd   sp!, {r4, fp, ip, lr, pc}
        sub     fp, ip, #4
        sub     sp, sp, #40
        str     r0, [fp, #-48]
        str     r1, [fp, #-52]
        bl      __gccmain
## float.S (gcc 4.4) :
main:
        @ args = 0, pretend = 0, frame = 36
        @ frame_needed = 1, uses_anonymous_args = 0
        stmfd   sp!, {r4, fp, lr}
        add     fp, sp, #8
        sub     sp, sp, #40
        str     r0, [fp, #-40]
        str     r1, [fp, #-44]
        bl      __gccmain

Also a change in offsets I see (e.g. just above the bl statement) from -48 to 
-40
should not change alignment from multiple of 8 to something that's not a 
multiple
of 8. (It might in a general case but it wouldn't explain the failure of this
program.)

        Danny
-- 
Danny Backx ; danny.backx - at - scarlet.be ; http://danny.backx.info

Reply via email to