#!/bin/sh

dump() {
    (
    cd "$1" || exit 1
    rm -rf *.testdir 2>/dev/null
    echo "Dumping in $1: `find -name '*.a' | xargs`" >&2
    for f in `find -name '*.a' | xargs`; do
	test -f $f || continue
	dir=`basename ${f%.a}.$RANDOM.testdir`
        rm -rf $dir 2>/dev/null
        mkdir -p $dir
	cp $f $dir
        (
	cd $dir || exit 1
        ar x *.a # there is exactly one
        for o in *.o *.os *.oS; do
		test -f $o || continue
		echo "DUMPING $f::$o"
		size $o
                objdump -xdr -s -w $o
        done
	)
        rm -rf $dir 2>/dev/null
    done
    for o in lib/*.o lib/*.os lib/*.oS; do
	test -f $o || continue
	echo "DUMPING $o"
	size $o
        objdump -xdr -s -w $o
    done
    )
}

{
dump ../uClibc.t0.result/ldso
dump ../uClibc.t0.result/lib
dump ../uClibc.t0.result/libc
dump ../uClibc.t0.result/libcrypt
dump ../uClibc.t0.result/libm
dump ../uClibc.t0.result/libnsl
dump ../uClibc.t0.result/libpthread
dump ../uClibc.t0.result/libresolv
dump ../uClibc.t0.result/librt
dump ../uClibc.t0.result/libutil
} >zdump_old.disasm

{
dump ./ldso
dump ./lib
dump ./libc
dump ./libcrypt
dump ./libm
dump ./libnsl
dump ./libpthread
dump ./libresolv
dump ./librt
dump ./libutil
} >zdump_new.disasm

diff -u -U10 zdump_old.disasm zdump_new.disasm >zdump.diff
