lkml.org 
[lkml]   [2011]   [Dec]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] x86: Use -m-omit-leaf-frame-pointer to shrink text size

* Jan Beulich <JBeulich@suse.com> wrote:

> >>> On 16.12.11 at 10:23, Jeremy Fitzhardinge <jeremy@goop.org> wrote:
> > On 12/16/2011 12:53 AM, Ingo Molnar wrote:
> >> * Ingo Molnar <mingo@elte.hu> wrote:
> >>
> >>> [...]
> >>>
> >>> The call-chains are still intact for quality backtraces
> >>> and for call-chain profiling (perf record -g), as the
> >>> backtrace walker can deduct the full backtrace from the
> >>> RIP of a leaf function and the parent chain.
>
> Are you sure about that even if the leaf function uses rBP for
> a different purpose?

Well, i assumed that GCC does not mess with %bp in leaf
functions - a frame pointer is barely useful if it's destroyed
spuriously in leaf functions.

A quick grep of the assembly appears to support that assumption:

$ objdump -d vmlinux | grep ',%rbp$' | cut -d: -f2- | sort | uniq -c | sort -n | tail -10

3 48 89 d5 mov %rdx,%rbp
3 4c 89 cd mov %r9,%rbp
4 48 0f 45 e8 cmovne %rax,%rbp
4 48 83 cd ff or $0xffffffffffffffff,%rbp
5 4c 89 dd mov %r11,%rbp
7 48 21 fd and %rdi,%rbp
10 48 d3 e5 shl %cl,%rbp
14 48 85 ed test %rbp,%rbp
14 48 8b 6c 24 20 mov 0x20(%rsp),%rbp
31042 48 89 e5 mov %rsp,%rbp

%rbp is not touched, except in a few special assembly glue/entry
pieces of code.

> >> Hm, noticed one complication while looking at annotated
> >> assembly code in perf top. Code doing function calls from
> >> within asm() is incorrectly marked 'leaf' by GCC:
> >>
> >> ffffffff812b82d8 <arch_local_save_flags>:
> >> ffffffff812b82d8: ff 14 25 00 d9 c1 81 callq *0xffffffff81c1d900
> >> ffffffff812b82df: c3 retq
> >>
> >> So all the paravirt details will have to be fixed, so that
> >> GCC is able to see that there's a real function call done
> >> inside. Jeremy, Konrad?
>
> If the above is not a problem, wouldn't this simply result in
> a skipped function layer?

Yeah - i guess we can live with that, as long as the frame
pointer chain is otherwise usable and walkable.

Thanks,

Ingo


\
 
 \ /
  Last update: 2011-12-16 13:05    [W:0.058 / U:0.048 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site