#!/bin/sh
# compare two object files, in depth.

x=$1
y=$2
BOTH="$1 $2"


# if they cmp, we're fine.
if (cmp $BOTH > /dev/null)
then
	exit 0
fi

# otherwise, we must look closer.
if (doboth $BOTH size)
then
	echo Sizes ok.
else
	echo Sizes differ:
	size $BOTH
#	exit 1
fi

if (doboth $BOTH objdump +header)
then
	echo Headers ok.
else
	echo Header differences.
#	exit 1
fi

if (doboth $BOTH objdump +text > /dev/null)
then
	echo Text ok.
else
	echo Text differences.
#	doboth $BOTH objdump +text
#	exit 1
fi

if (doboth $BOTH objdump +data > /dev/null)
then
	echo Data ok.
else
	echo Data differences.
#	doboth $BOTH objdump +data
#	exit 1
fi

if (doboth $BOTH objdump +symbols > /dev/null)
then
	echo Symbols ok.
else
	echo -n Symbol differences...

	if (doboth $BOTH dounsortsymbols)
	then
		echo but symbols are simply ordered differently.
#		echo Now what to do about relocs'?'
#		exit 1
	else
		echo and symbols differ in content.
		exit 1
	fi
fi

# of course, if there were symbol diffs, then the reloc symbol indexes
# will be off.

if (doboth $BOTH objdump -r > /dev/null)
then
	echo Reloc ok.
else
	echo -n Reloc differences...

	if (doboth $BOTH dounsortreloc)
	then
		echo but relocs are simply ordered differently.
	else
		echo and relocs differ in content.
		exit 1
	fi
fi

exit

# eof
