diff options
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/mkdiff_obj | 39 | ||||
-rwxr-xr-x | scripts/mkdiff_obj_bloat | 33 |
2 files changed, 72 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 +) diff --git a/scripts/mkdiff_obj_bloat b/scripts/mkdiff_obj_bloat new file mode 100755 index 0000000..63b2c2e --- /dev/null +++ b/scripts/mkdiff_obj_bloat @@ -0,0 +1,33 @@ +#!/bin/sh + +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 + $1/scripts/bloat-o-meter $1/$oname $2/$oname | grep 'otal: 0 byte' >/dev/null && continue + $1/scripts/bloat-o-meter $1/$oname $2/$oname + size $1/$oname $2/$oname + echo +done +) |