• Masami Hiramatsu's avatar
    perf probe: Fix to search nested inlined functions in CU · b0e9cb28
    Masami Hiramatsu authored
    Fix perf probe to walk through the lines of all nested inlined function
    call sites and declared lines when a whole CU is passed to the line
    walker.
    
    The die_walk_lines() can have two different type of DIEs, subprogram (or
    inlined-subroutine) DIE and CU DIE.
    
    If a caller passes a subprogram DIE, this means that the walker walk on
    lines of given subprogram. In this case, it just needs to search on
    direct children of DIE tree for finding call-site information of inlined
    function which directly called from given subprogram.
    
    On the other hand, if a caller passes a CU DIE to the walker, this means
    that the walker have to walk on all lines in the source files included
    in given CU DIE. In this case, it has to search whole DIE trees of all
    subprograms to find the call-site information of all nested inlined
    functions.
    
    Without this patch:
    
    $ perf probe --line kernel/cpu.c:151-157
    </home/mhiramat/ksrc/linux-2.6/kernel/cpu.c:151>
    
             static int cpu_notify(unsigned long val, void *v)
             {
        154         return __cpu_notify(val, v, -1, NULL);
             }
    
    With this:
    $ perf probe --line kernel/cpu.c:151-157
    </home/mhiramat/ksrc/linux-2.6/kernel/cpu.c:151>
    
        152  static int cpu_notify(unsigned long val, void *v)
             {
        154         return __cpu_notify(val, v, -1, NULL);
             }
    
    As you can see, --line option with source line range shows the declared
    lines as probe-able.
    
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: yrl.pp-manager.tt@hitachi.com
    Link: http://lkml.kernel.org/r/20110811110241.19900.34994.stgit@fedora15Signed-off-by: default avatarMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    b0e9cb28
dwarf-aux.c 19 KB