busybox/scripts/mkdiff_obj
<<
>>
Prefs
   1#!/bin/sh
   2
   3filter() {
   4        # sed removes " address: " prefixes which mess up diff
   5        sed $'s/^\\(\t*\\)[ ]*[0-9a-f][0-9a-f]*:[ \t]*/\\1/' \
   6        | sed 's/__GI_//g'
   7}
   8
   9test -d "$1" || exit 1
  10test -d "$2" || exit 1
  11
  12{
  13        (
  14                cd "$1" || exit 1
  15                find -name '*.o' -o -name '*.os' # -o -name '*.so'
  16        )
  17        (
  18                cd "$2" || exit 1
  19                find -name '*.o' -o -name '*.os' # -o -name '*.so'
  20        )
  21} | sed 's:^\./::' | sort | uniq | \
  22tee LST | \
  23(
  24IFS=''
  25while read -r oname; do
  26        if ! test -f "$1/$oname"; then
  27                echo "Only $2/$oname"
  28                continue
  29        fi
  30        if ! test -f "$2/$oname"; then
  31                echo "Only $1/$oname"
  32                continue
  33        fi
  34        diff -q -- "$1/$oname" "$2/$oname" >/dev/null && continue
  35        (cd "$1"; objdump -dr "$oname" | filter >"$oname.disasm")
  36        (cd "$2"; objdump -dr "$oname" | filter >"$oname.disasm")
  37        diff -u "$1/$oname.disasm" "$2/$oname.disasm"
  38done
  39)
  40