• Jiri Olsa's avatar
    perf tests: Fix dwarf unwind for stripped binaries · fdf7c49c
    Jiri Olsa authored
    When we strip the perf binary, dwarf unwind test stop
    to work. The reason is that strip will remove static
    function symbols, which we need to check for unwind.
    
    This change will keep this test working in cases where
    the global symbols are put into dynamic symbol table,
    which is the case on x86. It still won't work on powerpc.
    
    Making those 5 local functions global, and adding
    'test_dwarf_unwind__' to their names.
    
    Committer testing:
    
    Before:
    
      # perf test dwarf
      58: DWARF unwind                               : Ok
      # strip ~/bin/perf
      # perf test dwarf
      58: DWARF unwind                               : FAILED!
      # perf test -v dwarf
      58: DWARF unwind                               :
      --- start ---
      test child forked, pid 6590
      unwind: thread map already set, dso=/home/acme/bin/perf
      <SNIP>
      unwind: access_mem addr 0x7ffce6c48098 val 48563f, offset 1144
      unwind: test__dwarf_unwind:ip = 0x4a54e5 (0xa54e5)
      got: test__dwarf_unwind 0xa54e5, expecting test__dwarf_unwind
      unwind: '':ip = 0x4a50bb (0xa50bb)
      failed: got unresolved address 0xa50bb
      unwind failed
      test child finished with -1
      ---- end ----
      DWARF unwind: FAILED!
      #
    
    After:
    
      # perf test dwarf
      58: DWARF unwind                               : Ok
      # strip ~/bin/perf
      # perf test dwarf
      58: DWARF unwind                               : Ok
      #
      # perf test -v dwarf
      58: DWARF unwind                               :
      --- start ---
      test child forked, pid 7219
      unwind: thread map already set, dso=/home/acme/bin/perf
      <SNIP>
      unwind: access_mem addr 0x7fff007da2c8 val 48575f, offset 1144
      unwind: test__arch_unwind_sample:ip = 0x589044 (0x189044)
      got: test__arch_unwind_sample 0x189044, expecting test__arch_unwind_sample
      unwind: test_dwarf_unwind__thread:ip = 0x4a52f7 (0xa52f7)
      got: test_dwarf_unwind__thread 0xa52f7, expecting test_dwarf_unwind__thread
      unwind: test_dwarf_unwind__compare:ip = 0x4a5468 (0xa5468)
      got: test_dwarf_unwind__compare 0xa5468, expecting test_dwarf_unwind__compare
      unwind: bsearch:ip = 0x7f6608ae94d8 (0x394d8)
      got: bsearch 0x394d8, expecting bsearch
      unwind: test_dwarf_unwind__krava_3:ip = 0x4a54d1 (0xa54d1)
      got: test_dwarf_unwind__krava_3 0xa54d1, expecting test_dwarf_unwind__krava_3
      unwind: test_dwarf_unwind__krava_2:ip = 0x4a550b (0xa550b)
      got: test_dwarf_unwind__krava_2 0xa550b, expecting test_dwarf_unwind__krava_2
      unwind: test_dwarf_unwind__krava_1:ip = 0x4a554b (0xa554b)
      got: test_dwarf_unwind__krava_1 0xa554b, expecting test_dwarf_unwind__krava_1
      unwind: test__dwarf_unwind:ip = 0x4a5605 (0xa5605)
      got: test__dwarf_unwind 0xa5605, expecting test__dwarf_unwind
      test child finished with 0
      ---- end ----
      DWARF unwind: Ok
      #
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/20180206181813.10943-17-jolsa@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    fdf7c49c
dwarf-unwind.c 5.16 KB