| #!/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 |