Messages in this thread | | | Date | Thu, 19 Nov 2009 19:39:18 +0100 (CET) | From | Thomas Gleixner <> | Subject | Re: BUG: GCC-4.4.x changes the function frame on some functions |
| |
On Thu, 19 Nov 2009, Andrew Haley wrote: > OK, I found it. There is a struct defined as > > struct entry { > ... > } __attribute__((__aligned__((1 << (4))))); > > and then in timer_stats_update_stats you have a local variable of type > struct entry: > > void timer_stats_update_stats() > { > spinlock_t *lock; > struct entry *entry, input; > > So, gcc has to 16-align the stack pointer to satisfy the alignment > for struct entry.
This does not explain why GCC < 4.4.x actually puts
push %ebp mov %esp, %ebp
first and why GCC 4.4.x decides to create an extra copy of the return address instead of just keeping the mcount stack magic right at the function entry.
Thanks,
tglx
| |