udhcpc6: preparatory patch, no code changes
[oweals/busybox.git] / scripts / mkdiff_obj
index a6ec5e6025d6bff3eb12c94074d67b9ecb210662..307474874428d6c92f129fbdebce472b0a2a544a 100755 (executable)
@@ -1,28 +1,35 @@
 #!/bin/sh
 
+usage() {
+       echo "Usage: ${0##*/} DIR1 DIR2"
+       echo
+       echo "Compares all object files recursivelty found in DIR1 and DIR2."
+       echo "Prints diff of their disassembly."
+       echo
+       exit $1
+}
+
 filter() {
        # sed removes " address: " prefixes which mess up diff
        sed $'s/^\\(\t*\\)[ ]*[0-9a-f][0-9a-f]*:[ \t]*/\\1/' \
        | sed 's/__GI_//g'
 }
 
-test -d "$1" || exit 1
-test -d "$2" || exit 1
+test -d "$1" || usage 1
+test -d "$2" || usage 1
 
 {
        (
                cd "$1" || exit 1
-               find -name '*.o' -o -name '*.os' # -o -name '*.so'
+               find -name '*.o' -o -name '*.os' # -o -name '*.so'
        )
        (
                cd "$2" || exit 1
-               find -name '*.o' -o -name '*.os' # -o -name '*.so'
+               find -name '*.o' -o -name '*.os' # -o -name '*.so'
        )
 } | sed 's:^\./::' | sort | uniq | \
-tee LST | \
 (
-IFS=''
-while read -r oname; do
+while IFS='' read -r oname; do
        if ! test -f "$1/$oname"; then
                echo "Only $2/$oname"
                continue
@@ -32,8 +39,8 @@ while read -r oname; do
                continue
        fi
        diff -q -- "$1/$oname" "$2/$oname" >/dev/null && continue
-       (cd "$1"; objdump -dr "$oname" | filter >"$oname.disasm")
-       (cd "$2"; objdump -dr "$oname" | filter >"$oname.disasm")
-       diff -u "$1/$oname.disasm" "$2/$oname.disasm"
+       (cd "$1" && { size "$oname"; objdump -dr "$oname" | filter; } >"$oname.disasm")
+       (cd "$2" && { size "$oname"; objdump -dr "$oname" | filter; } >"$oname.disasm")
+       diff -u -- "$1/$oname.disasm" "$2/$oname.disasm"
 done
 )