• M
    perf probe: Fix to handle aliased symbols in glibc · 9b118aca
    Masami Hiramatsu 提交于
    Fix perf probe to handle aliased symbols correctly in glibc.  In the
    glibc, several symbols are defined as an alias of __libc_XXX, e.g.
    malloc is an alias of __libc_malloc.
    
    In such cases, dwarf has no subroutine instances of the alias functions
    (e.g. no "malloc" instance), but the map has that symbol and its
    address.
    
    Thus, if we search the alieased symbol in debuginfo, we always fail to
    find it, but it is in the map.
    
    To solve this problem, this fails back to address-based alternative
    search, which searches the symbol in the map, translates its address to
    alternative (correct) function name by using debuginfo, and retry to
    find the alternative function point from debuginfo.
    
    This adds fail-back process to --vars, --lines and --add options. So,
    now you can use those on malloc@libc :)
    
    Without this patch;
      -----
      # ./perf probe -x /usr/lib64/libc-2.17.so -V malloc
      Failed to find the address of malloc
        Error: Failed to show vars.
      # ./perf probe -x /usr/lib64/libc-2.17.so -a "malloc bytes"
      Probe point 'malloc' not found in debuginfo.
        Error: Failed to add events.
      -----
    
    With this patch;
      -----
      # ./perf probe -x /usr/lib64/libc-2.17.so -V malloc
      Available variables at malloc
              @<__libc_malloc+0>
                      size_t  bytes
      # ./perf probe -x /usr/lib64/libc-2.17.so -a "malloc bytes"
      Added new event:
        probe_libc:malloc    (on malloc in /usr/lib64/libc-2.17.so with bytes)
    
      You can now use it in all perf tools, such as:
    
              perf record -e probe_libc:malloc -aR sleep 1
      -----
    Reported-by: NArnaldo Carvalho de Melo <acme@kernel.org>
    Signed-off-by: NMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Naohiro Aota <naota@elisp.net>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/20150306073120.6904.13779.stgit@localhost.localdomainSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
    9b118aca
probe-event.c 63.5 KB