1. 29 5月, 2015 1 次提交
    • A
      perf machine: Fix up vdso methods names · 9a4388c7
      Arnaldo Carvalho de Melo 提交于
      To make it consistent with the other dso lifetime routines.
      
      For instance:
      
       struct dso *vdso__new(struct machine *machine, const char *short_name,
      		        const char *long_name)
      
      Becomes:
      
       struct dso *machine__addnew_vdso(struct machine *machine, const
      				  char *short_name, const char *long_name)
      
      Because:
      
      1) There is no 'struct vdso' for us to have vdso__ prefixed routines.
      
      2) Because it will not really just create a new instance of 'struct
         dso', it'll call dso__new() but it will also insert it into the
         DSO's list/rbtree, and we have a method name for that: 'addnew',
         just like we have dsos__addnew().
      
      3) So it is really a 'struct machine' operation, it is the first
         argument, etc.
      
      This way the place where this is used gets consistent:
      
                      if (vdso) {
                              pgoff = 0;
      -                       dso = vdso__dso_findnew(machine, thread);
      +                       dso = machine__findnew_vdso(machine, thread);
                      } else
                              dso = machine__findnew_dso(machine, filename);
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: http://lkml.kernel.org/n/tip-r3w3tvh8exm9xfz3p4tz9qbz@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      9a4388c7
  2. 29 10月, 2014 1 次提交
    • A
      perf tools: Add support for 32-bit compatibility VDSOs · f6832e17
      Adrian Hunter 提交于
      'perf record' post-processes the event stream  to create a list of
      build-ids for object files for which sample events have been recorded.
      That results in those object files being recorded in the build-id cache.
      
      In the case of VDSO, perf tools reads it from memory and copies it into
      a temporary file, which as decribed above, gets added to the build-id
      cache.
      
      Then when the perf.data file is processed by other tools, the build-id
      of VDSO is listed in the perf.data file and the VDSO can be read from
      the build-id cache.  In that case the name of the map, the short name of
      the DSO, and the entry in the build-id cache are all "[vdso]".
      
      However, in the 64-bit case, there also can be 32-bit compatibility
      VDSOs.
      
      A previous patch added programs "perf-read-vdso32" and "perf
      read-vdsox32".
      
      This patch uses those programs to read the correct VDSO for a thread and
      create a temporary file just as for the 64-bit VDSO.
      
      The map name and the entry in the build-id cache are still "[vdso]" but
      the DSO short name becomes "[vdso32]" and "[vdsox32]" respectively.
      Signed-off-by: NAdrian Hunter <adrian.hunter@intel.com>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Namhyung Kim <namhyung@gmail.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Link: http://lkml.kernel.org/r/1414061124-26830-16-git-send-email-adrian.hunter@intel.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      f6832e17
  3. 24 7月, 2014 4 次提交
  4. 11 9月, 2012 1 次提交
    • 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