• Naveen N. Rao's avatar
    perf test: Fix DWARF unwind test by adding non-inline to expected function in a backtrace · dfadf8b3
    Naveen N. Rao authored
    'DWARF unwind' 'perf test' can sometimes fail:
    
      $ perf test -v 74
      Couldn't bump rlimit(MEMLOCK), failures may take place when creating BPF maps, etc
       74: Test dwarf unwind                                               :
      --- start ---
      test child forked, pid 3785254
      Problems creating module maps, continuing anyway...
      Problems creating module maps, continuing anyway...
      unwind: test__arch_unwind_sample:ip = 0x102d0ad4c (0x36ad4c)
      unwind: access_mem addr 0x7fffc33128c8, val 1031c3228, offset 120
      unwind: access_mem addr 0x7fffc33128d0, val 12427cc70, offset 128
      <snip>
      unwind: test_dwarf_unwind__krava_3:ip = 0x102b8768b (0x1e768b)
      unwind: access_mem addr 0x7fffc3313048, val 7fffc3313050, offset 2040
      unwind: access_mem addr 0x7fffc3313060, val 102b8777c, offset 2064
      unwind: test_dwarf_unwind__krava_2:ip = 0x102b8770b (0x1e770b)
      unwind: access_mem addr 0x7fffc3313088, val 7fffc3313090, offset 2104
      unwind: access_mem addr 0x7fffc33130a0, val 102b87890, offset 2128
      unwind: test_dwarf_unwind__krava_1:ip = 0x102b8777b (0x1e777b)
      unwind: access_mem addr 0x7fffc3313108, val 10323a274, offset 2232
      unwind: access_mem addr 0x7fffc3313110, val ffffffffffffffff, offset 2240
      unwind: access_mem addr 0x7fffc3313118, val 102c08ed0, offset 2248
      unwind: access_mem addr 0x7fffc3313120, val 1031db000, offset 2256
      unwind: access_mem addr 0x7fffc3313128, val 7fffc3313130, offset 2264
      unwind: access_mem addr 0x7fffc3313140, val 102b45ee8, offset 2288
      unwind: '':ip = 0x102b8788f (0x1e788f)
      failed: got unresolved address 0x102b8788f
      unwind: failed with 'no error'
      got wrong number of stack entries 0 != 8
      test child finished with -1
      ---- end ----
      Test dwarf unwind: FAILED!
    
    We expect to resolve test__dwarf_unwind as the last symbol, but that
    function can be optimized away:
    
      $ objdump -tT /usr/bin/perf | grep dwarf_unwind
      000000000083b018 g    DO .data	0000000000000040  Base        tests__dwarf_unwind
      00000000001e7750 g    DF .text	0000000000000068  Base        0x60 test_dwarf_unwind__krava_1
      00000000001e76e0 g    DF .text	0000000000000068  Base        0x60 test_dwarf_unwind__krava_2
      00000000001e7620 g    DF .text	00000000000000b4  Base        0x60 test_dwarf_unwind__krava_3
      00000000001e74f0 g    DF .text	0000000000000128  Base        0x60 test_dwarf_unwind__compare
      00000000001e7350 g    DF .text	000000000000019c  Base        0x60 test_dwarf_unwind__thread
      000000000083b000 g    DO .data	0000000000000018  Base        suite__dwarf_unwind
    
    Fix this similar to commit fdf7c49c ("perf tests: Fix dwarf
    unwind for stripped binaries") by marking the function as a global and
    adding the 'noinline' attribute to it.
    
    With this patch:
    
      $ objdump -tT perf | grep dwarf_unwind
      000000000083b018 g    DO .data	0000000000000040  Base        tests__dwarf_unwind
      00000000001e80f0 g    DF .text	0000000000000068  Base        0x60 test_dwarf_unwind__krava_1
      00000000001e8080 g    DF .text	0000000000000068  Base        0x60 test_dwarf_unwind__krava_2
      00000000001e7fc0 g    DF .text	00000000000000b4  Base        0x60 test_dwarf_unwind__krava_3
      00000000001e7e90 g    DF .text	0000000000000128  Base        0x60 test_dwarf_unwind__compare
      00000000001e7cf0 g    DF .text	000000000000019c  Base        0x60 test_dwarf_unwind__thread
      00000000001e8160 g    DF .text	0000000000000248  Base        0x60 test__dwarf_unwind
      000000000083b000 g    DO .data	0000000000000018  Base        suite__dwarf_unwind
      $ ./perf test 74
       74: Test dwarf unwind                                               : Ok
    Reported-by: default avatarDisha Goel <disgoel@linux.vnet.ibm.com>
    Signed-off-by: default avatarNaveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Link: http://lore.kernel.org/lkml/20230125123442.107156-1-naveen.n.rao@linux.vnet.ibm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    dfadf8b3
dwarf-unwind.c 6.12 KB