Skip to content

Commit 446c595

Browse files
captain5050acmel
authored andcommitted
perf test addr2line_inlines: Ensure inline information shows on LBR leaves
Expand the addr2line inline function testing to also run for an LBR callchain, skipping if LBR support isn't present. Signed-off-by: Ian Rogers <[email protected]> Cc: Adrian Hunter <[email protected]> Cc: Alexander Shishkin <[email protected]> Cc: Andi Kleen <[email protected]> Cc: Dapeng Mi <[email protected]> Cc: Dmitriy Vyukov <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: James Clark <[email protected]> Cc: Jiri Olsa <[email protected]> Cc: Krzysztof Łopatowski <[email protected]> Cc: Namhyung Kim <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Weilin Wang <[email protected]> Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
1 parent 04f81f4 commit 446c595

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

tools/perf/tests/shell/addr2line_inlines.sh

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,36 @@ test_dwarf() {
6161
fi
6262
}
6363

64+
test_lbr() {
65+
echo "Inline unwinding LBR verification test"
66+
if [ ! -f /sys/bus/event_source/devices/cpu/caps/branches ] &&
67+
[ ! -f /sys/bus/event_source/devices/cpu_core/caps/branches ]
68+
then
69+
echo "Skip: only x86 CPUs support LBR"
70+
return
71+
fi
72+
73+
# Record data. Currently only dwarf callchains support inlined functions.
74+
perf record --call-graph lbr -e cycles:u -o "${perf_data}" -- perf test -w inlineloop 1
75+
76+
# Check output with inline (default) and srcline
77+
perf script -i "${perf_data}" --fields +srcline > "${perf_script_txt}"
78+
79+
# Expect the leaf and middle functions to occur on lines in the 20s, with
80+
# the non-inlined parent function on a line in the 30s.
81+
if grep -q "inlineloop.c:2. (inlined)" "${perf_script_txt}" &&
82+
grep -q "inlineloop.c:3.$" "${perf_script_txt}"
83+
then
84+
echo "Inline unwinding lbr verification test [Success]"
85+
else
86+
echo "Inline unwinding lbr verification test [Failed missing inlined functions]"
87+
err=1
88+
fi
89+
}
90+
6491
test_fp
6592
test_dwarf
93+
test_lbr
6694

6795
cleanup
6896
exit $err

0 commit comments

Comments
 (0)