1. 09 10月, 2013 34 次提交
  2. 08 10月, 2013 2 次提交
  3. 05 10月, 2013 4 次提交
    • N
      perf session: Fix infinite loop on invalid perf.data file · b314e5cf
      Namhyung Kim 提交于
      perf-record updates the header in the perf.data file at termination.
      Without this update perf-report (and other processing built-ins) it
      caused an infinite loop when perf report (or something like) called.
      
      This is because the algorithm in __perf_session__process_events()
      depends on the data_size which is read from file header.  Use file size
      directly instead in this case to do the best-effort processing.
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Tested-by: NDavid Ahern <dsahern@gmail.com>
      Tested-by: NSonny Rao <sonnyrao@chromium.org>
      Acked-by: NIngo Molnar <mingo@kernel.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Sonny Rao <sonnyrao@chromium.org>
      Link: http://lkml.kernel.org/r/1380529188-27193-1-git-send-email-namhyung@kernel.orgSigned-off-by: NDavid Ahern <dsahern@gmail.com>
      [ Reworded warning as per Ingo Molnar suggestion, replaces 'perf.data'
        with session->filename, to precisely identify the data file involved ]
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      b314e5cf
    • A
      perf tools: Fix installation of libexec components · 027a7e86
      Arnaldo Carvalho de Melo 提交于
      Doing a fresh install on a user home directory needs to first make sure
      that the ~/libexec/perf-core/ directory is present so that
      'perf-archive' like scripts, 'perf test' attr config files and 'perf
      script' scripts can be installed.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Link: http://lkml.kernel.org/n/tip-z7ryi3r1b9dn9smbfnab0fdc@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      027a7e86
    • M
      perf probe: Fix to find line information for probe list · e08cfd4b
      Masami Hiramatsu 提交于
      Fix to find the correct (as much as possible) line information for
      listing probes. Without this fix, perf probe --list action will show
      incorrect line information as below;
      
        probe:getname_flags  (on getname_flags@ksrc/linux-3/fs/namei.c)
        probe:getname_flags_1 (on getname:-89@x86/include/asm/current.h)
        probe:getname_flags_2 (on user_path_at_empty:-2054@x86/include/asm/current.h)
      
      The minus line number is obviously wrong, and current.h is not related
      to the probe point. Deeper investigation discovered that there were 2
      issues related to this bug, and minor typos too.
      
      The 1st issue is the rack of considering about nested inlined functions,
      which causes the wrong (relative) line number.
      
      The 2nd issue is that the dwarf line info is not correct at those
      points. It points 14th line of current.h.
      
      Since it seems that the line info includes somewhat unreliable
      information, this fixes perf to try to find correct line information
      from both of debuginfo and line info as below.
      
      1) Probe address is the entry of a function instance
      
        In this case, the line is set as the function declared line.
      
      2) Probe address is the entry of an expanded inline function block
      
        In this case, the line is set as the function call-site line.
        This means that the line number is relative from the entry line
        of caller function (which can be an inlined function if nested)
      
      3) Probe address is inside a function instance or an expanded
         inline function block
      
        In this case, perf probe queries the line number from lineinfo
        and verify the function declared file is same as the file name
        queried from lineinfo.
      
        If the file name is different, it is a failure case. The probe
        address is shown as symbol+offset.
      
      4) Probe address is not in the any function instance
      
        This is a failure case, the probe address is shown as
        symbol+offset.
      
      With this fix, perf probe -l shows correct probe lines as below;
      
        probe:getname_flags  (on getname_flags@ksrc/linux-3/fs/namei.c)
        probe:getname_flags_1 (on getname:2@ksrc/linux-3/fs/namei.c)
        probe:getname_flags_2 (on user_path_at_empty:4@ksrc/linux-3/fs/namei.c)
      
      Changes at v2:
       - Fix typos in the function comments. (Thanks to Namhyung Kim)
       - Use die_find_top_inlinefunc instead of die_find_inlinefunc_next.
      Signed-off-by: NMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/r/20130930092144.1693.11058.stgit@udc4-manage.rcp.hitachi.co.jpSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      e08cfd4b
    • A
      perf tools: Fix libaudit test · 47a92b82
      Arnaldo Carvalho de Melo 提交于
      In ubuntu systems the libaudit test was always failing due to the
      newline in the printf call not being escaped, which somehow didn't
      prevented the test from working as expected on other systems, such
      as fedora18.
      
      Fix it by removing the newline, as this is just a test, that program is
      just a compile test.
      
      The error messages, obtained using 'make V=1':
      
          CHK libaudit
      <stdin>: In function ‘main’:
      <stdin>:5:9: error: missing terminating " character [-Werror]
      <stdin>:5:2: error: missing terminating " character
      <stdin>:6:1: error: missing terminating " character [-Werror]
      <stdin>:6:1: error: missing terminating " character
      <stdin>:7:2: error: expected expression before ‘return’
      <stdin>:8:1: error: expected ‘;’ before ‘}’ token
      cc1: all warnings being treated as errors
      config/Makefile:241: No libaudit.h found, disables 'trace' tool, please install audit-libs-devel or libaudit-dev
      
      After this change the test works as expected in all systems tested and the
      'trace' tool is built when the needed devel packages are installed.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Link: http://lkml.kernel.org/n/tip-0trw8qs9hafeopc0vj1sicay@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      47a92b82