#! /bin/sh

# dpkg-cfdensity - find the denity of Maverick FPU instructions within a
# debian package containing executables or libraries.

insnstmp=/tmp/insns$$
cftmp=/tmp/cf$$

for package in "$@"
do
	ar x $package
	test -d data && rm -rf data
	mkdir data
	tar xzf data.tar.gz -C data
	find data -type f -print0 | xargs -0 file /dev/null | grep ELF |
		sed 's/:.*//' | while read filename
	do
		arm-linux-gnueabi-objdump -d "$filename"
	done | grep ' 	' | tee $insnstmp | grep ' 	cf' > $cftmp
	insns=`cat $insnstmp | wc -l`
	if [ "$insns" -gt 0 ]; then
		ppm=$(echo "1000000 * `cat $cftmp | wc -l` / $insns" | bc)
	else
		ppm=0
	fi
	if [ $# -gt 1 ]; then
		echo "$ppm	$package"
	else
		echo "$ppm"
	fi
done

rm debian-binary data.tar.gz control.tar.gz $insnstmp $cftmp
rm -rf data
