• J
    perf tools: Back [vdso] DSO with real data · 7dbf4dcf
    Jiri Olsa 提交于
    Storing data for VDSO shared object, because we need it for the post
    unwind processing.
    
    The VDSO shared object is same for all process on a running system, so
    it makes no difference when we store it inside the tracer - perf.
    
    When [vdso] map memory is hit, we retrieve [vdso] DSO image and store it
    into temporary file.
    
    During the build-id processing phase, the [vdso] DSO image is stored in
    build-id db, and build-id reference is made inside perf.data. The
    build-id vdso file object is called '[vdso]'. We don't use temporary
    file name which gets removed when record is finished.
    
    During report phase the vdso build-id object is treated as any other
    build-id DSO object.
    
    Adding following API for vdso object:
    
      bool is_vdso_map(const char *filename)
        - returns true if the filename matches vdso map name
    
      struct dso *vdso__dso_findnew(struct list_head *head)
        - find/create proper vdso DSO object
    
      vdso__exit(void)
        - removes temporary VDSO image if there's any
    
    This change makes backtrace dwarf post unwind possible from [vdso] maps.
    
    Following output is current report of [vdso] sample dwarf backtrace:
    
      # Overhead  Command      Shared Object                         Symbol
      # ........  .......  .................  .............................
      #
          99.52%       ex  [vdso]             [.] 0x00007fff3ace89af
                       |
                       --- 0x7fff3ace89af
    
    Following output is new report of [vdso] sample dwarf backtrace:
    
      # Overhead  Command      Shared Object                         Symbol
      # ........  .......  .................  .............................
      #
          99.52%       ex  [vdso]             [.] 0x00000000000009af
                       |
                       --- 0x7fff3ace89af
                           main
                           __libc_start_main
                           _start
    Signed-off-by: NJiri Olsa <jolsa@redhat.com>
    Acked-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Link: http://lkml.kernel.org/r/1347295819-23177-5-git-send-email-jolsa@redhat.com
    [ committer note: s/ALIGN/PERF_ALIGN/g to cope with the android build changes ]
    Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
    7dbf4dcf
map.c 16.8 KB