diff options
Diffstat (limited to 'scripts/mkdiff_obj')
-rwxr-xr-x | scripts/mkdiff_obj | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/scripts/mkdiff_obj b/scripts/mkdiff_obj index a6ec5e602..f783491af 100755 --- a/scripts/mkdiff_obj +++ b/scripts/mkdiff_obj | |||
@@ -1,28 +1,35 @@ | |||
1 | #!/bin/sh | 1 | #!/bin/sh |
2 | 2 | ||
3 | usage() { | ||
4 | echo "Usage: ${0##*/} DIR1 DIR2" | ||
5 | echo | ||
6 | echo "Compares all object files recursivelty found in DIR1 and DIR2." | ||
7 | echo "Prints diff of their disassembly." | ||
8 | echo | ||
9 | exit $1 | ||
10 | } | ||
11 | |||
3 | filter() { | 12 | filter() { |
4 | # sed removes " address: " prefixes which mess up diff | 13 | # sed removes " address: " prefixes which mess up diff |
5 | sed $'s/^\\(\t*\\)[ ]*[0-9a-f][0-9a-f]*:[ \t]*/\\1/' \ | 14 | sed $'s/^\\(\t*\\)[ ]*[0-9a-f][0-9a-f]*:[ \t]*/\\1/' \ |
6 | | sed 's/__GI_//g' | 15 | | sed 's/__GI_//g' |
7 | } | 16 | } |
8 | 17 | ||
9 | test -d "$1" || exit 1 | 18 | test -d "$1" || usage 1 |
10 | test -d "$2" || exit 1 | 19 | test -d "$2" || usage 1 |
11 | 20 | ||
12 | { | 21 | { |
13 | ( | 22 | ( |
14 | cd "$1" || exit 1 | 23 | cd "$1" || exit 1 |
15 | find -name '*.o' -o -name '*.os' # -o -name '*.so' | 24 | find -name '*.o' # -o -name '*.os' # -o -name '*.so' |
16 | ) | 25 | ) |
17 | ( | 26 | ( |
18 | cd "$2" || exit 1 | 27 | cd "$2" || exit 1 |
19 | find -name '*.o' -o -name '*.os' # -o -name '*.so' | 28 | find -name '*.o' # -o -name '*.os' # -o -name '*.so' |
20 | ) | 29 | ) |
21 | } | sed 's:^\./::' | sort | uniq | \ | 30 | } | sed 's:^\./::' | sort | uniq | \ |
22 | tee LST | \ | ||
23 | ( | 31 | ( |
24 | IFS='' | 32 | while IFS='' read -r oname; do |
25 | while read -r oname; do | ||
26 | if ! test -f "$1/$oname"; then | 33 | if ! test -f "$1/$oname"; then |
27 | echo "Only $2/$oname" | 34 | echo "Only $2/$oname" |
28 | continue | 35 | continue |
@@ -34,6 +41,6 @@ while read -r oname; do | |||
34 | diff -q -- "$1/$oname" "$2/$oname" >/dev/null && continue | 41 | diff -q -- "$1/$oname" "$2/$oname" >/dev/null && continue |
35 | (cd "$1"; objdump -dr "$oname" | filter >"$oname.disasm") | 42 | (cd "$1"; objdump -dr "$oname" | filter >"$oname.disasm") |
36 | (cd "$2"; objdump -dr "$oname" | filter >"$oname.disasm") | 43 | (cd "$2"; objdump -dr "$oname" | filter >"$oname.disasm") |
37 | diff -u "$1/$oname.disasm" "$2/$oname.disasm" | 44 | diff -u -- "$1/$oname.disasm" "$2/$oname.disasm" |
38 | done | 45 | done |
39 | ) | 46 | ) |