diff options
Diffstat (limited to 'scripts/mkdiff_obj')
-rwxr-xr-x | scripts/mkdiff_obj | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/scripts/mkdiff_obj b/scripts/mkdiff_obj new file mode 100755 index 0000000..a6ec5e6 --- /dev/null +++ b/scripts/mkdiff_obj @@ -0,0 +1,39 @@ +#!/bin/sh + +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 + +{ + ( + cd "$1" || exit 1 + find -name '*.o' -o -name '*.os' # -o -name '*.so' + ) + ( + cd "$2" || exit 1 + find -name '*.o' -o -name '*.os' # -o -name '*.so' + ) +} | sed 's:^\./::' | sort | uniq | \ +tee LST | \ +( +IFS='' +while read -r oname; do + if ! test -f "$1/$oname"; then + echo "Only $2/$oname" + continue + fi + if ! test -f "$2/$oname"; then + echo "Only $1/$oname" + 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" +done +) |