#!/bin/bash # Copyright © 2019 Red Hat Inc, Arnaldo Carvalho de Melo # Use pahole to produce output from BTF and from DWARF, then do a diff # Use --flat_arrays with DWARF as BTF, like CTF, flattens arrays. # Use --show_private_classes as BTF shows all structs, while pahole knows # if some struct is defined only inside another struct/class or in a function, # this information is not available when loading from BTF. if [ $# -eq 0 ] ; then echo "Usage: btfdiff " exit 1 fi file=$1 btf_output=$(mktemp /tmp/btfdiff.btf.XXXXXX) dwarf_output=$(mktemp /tmp/btfdiff.dwarf.XXXXXX) pahole_bin=${PAHOLE-"pahole"} ${pahole_bin} -F dwarf --flat_arrays --suppress_aligned_attribute --show_private_classes $file > $dwarf_output ${pahole_bin} -F btf $file > $btf_output diff -up $dwarf_output $btf_output rm -f $btf_output $dwarf_output exit 0