| #!/bin/bash |
| # perf inject to convert DWARF callchains to regular ones |
| # SPDX-License-Identifier: GPL-2.0 |
| |
| if ! perf check feature -q dwarf; then |
| echo "SKIP: DWARF support is not available" |
| exit 2 |
| fi |
| |
| TESTDATA=$(mktemp /tmp/perf-test.XXXXXX) |
| |
| err=0 |
| |
| cleanup() |
| { |
| trap - EXIT TERM INT |
| rm -f ${TESTDATA}* |
| } |
| |
| trap_cleanup() |
| { |
| cleanup |
| exit 1 |
| } |
| |
| trap trap_cleanup EXIT TERM INT |
| |
| echo "recording data with DWARF callchain" |
| perf record -F 999 --call-graph dwarf -o "${TESTDATA}" -- perf test -w noploop |
| |
| echo "convert DWARF callchain using perf inject" |
| perf inject -i "${TESTDATA}" --convert-callchain -o "${TESTDATA}.new" |
| |
| perf report -i "${TESTDATA}" --no-children -q --percent-limit=1 > ${TESTDATA}.out |
| perf report -i "${TESTDATA}.new" --no-children -q --percent-limit=1 > ${TESTDATA}.new.out |
| |
| echo "compare the both result excluding inlined functions" |
| if diff -u "${TESTDATA}.out" "${TESTDATA}.new.out" | grep "^- " | grep -qv "(inlined)"; then |
| echo "Found some differences" |
| diff -u "${TESTDATA}.out" "${TESTDATA}.new.out" |
| err=1 |
| fi |
| |
| cleanup |
| exit $err |