dwarves/btfdiff
Arnaldo Carvalho de Melo cdd088c05c btfdiff: Suppress alignment tags with BTF as well as with DWARF
Now that the alignment attributes are being inferred from BTF we need to
suppress it in btfdiff, as we can't infer for some cases, like when the
field is naturally aligned.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-10-28 09:37:26 -03:00

44 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
# SPDX-License-Identifier: GPL-2.0-only
# Copyright © 2019 Red Hat Inc, Arnaldo Carvalho de Melo <acme@redhat.com>
# 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 <filename_with_DWARF_and_maybe_BTF_info> [<filename_with_BTF_info>]"
exit 1
fi
dwarf_input=$1
btf_input=$dwarf_input
if [ $# -eq 2 ] ; then
btf_input=$2
fi
btf_output=$(mktemp /tmp/btfdiff.btf.XXXXXX)
dwarf_output=$(mktemp /tmp/btfdiff.dwarf.XXXXXX)
pahole_bin=${PAHOLE-"pahole"}
${pahole_bin} -F dwarf \
--flat_arrays \
--sort \
--jobs \
--suppress_aligned_attribute \
--suppress_force_paddings \
--suppress_packed \
--show_private_classes $dwarf_input > $dwarf_output
${pahole_bin} -F btf \
--sort \
--suppress_aligned_attribute \
--suppress_packed \
$btf_input > $btf_output
diff -up $dwarf_output $btf_output
rm -f $btf_output $dwarf_output
exit 0