Commit 446c595d authored by Ian Rogers's avatar Ian Rogers Committed by Arnaldo Carvalho de Melo
Browse files

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: default avatarIan Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Dapeng Mi <dapeng1.mi@linux.intel.com>
Cc: Dmitriy Vyukov <dvyukov@google.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: James Clark <james.clark@linaro.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Krzysztof Łopatowski <krzysztof.m.lopatowski@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Weilin Wang <weilin.wang@intel.com>
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 04f81f45
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -61,8 +61,36 @@ test_dwarf() {
    fi
}

test_lbr() {
    echo "Inline unwinding LBR verification test"
    if [ ! -f /sys/bus/event_source/devices/cpu/caps/branches ] &&
       [ ! -f /sys/bus/event_source/devices/cpu_core/caps/branches ]
    then
        echo "Skip: only x86 CPUs support LBR"
        return
    fi

    # Record data. Currently only dwarf callchains support inlined functions.
    perf record --call-graph lbr -e cycles:u -o "${perf_data}" -- perf test -w inlineloop 1

    # Check output with inline (default) and srcline
    perf script -i "${perf_data}" --fields +srcline > "${perf_script_txt}"

    # Expect the leaf and middle functions to occur on lines in the 20s, with
    # the non-inlined parent function on a line in the 30s.
    if grep -q "inlineloop.c:2. (inlined)" "${perf_script_txt}" &&
       grep -q "inlineloop.c:3.$" "${perf_script_txt}"
    then
        echo "Inline unwinding lbr verification test [Success]"
    else
        echo "Inline unwinding lbr verification test [Failed missing inlined functions]"
        err=1
    fi
}

test_fp
test_dwarf
test_lbr

cleanup
exit $err