For example, $ scripts/objdiff record init drivers/usb disassembles all the objects under init and drivers/usb directories. This feature would be useful when we change various files under the specific directory.
Showing the changes to scripts/objdiff (1 of 1 file). Show all
Unified · Split
| @@ -36,7 +36,7 @@ TMPD=$SRCTREE/.tmp_objdiff · 35 unmodified lines | ||
| 36 | 36 | |
| 37 | 37 | usage() { |
| 38 | 38 | echo >&2 "Usage: $0 <command> <args>" |
| 39 | − echo >&2 " record <list of object files>" | |
| 39 | + echo >&2 " record <list of object files or directories>" | |
| 40 | 40 | echo >&2 " diff <commitA> <commitB>" |
| 41 | 41 | echo >&2 " clean all | <commit>" |
| 42 | 42 | exit 1 |
| @@ -54,6 +54,18 @@ get_output_dir() { · 11 unmodified lines | ||
| 54 | 54 | echo $TMPD/$CMT${dir#$SRCTREE} |
| 55 | 55 | } |
| 56 | 56 | |
| 57 | +do_objdump() { | |
| 58 | + dir=$(get_output_dir $1) | |
| 59 | + base=${1##*/} | |
| 60 | + dis=$dir/${base%.o}.dis | |
| 61 | + | |
| 62 | + [ ! -d "$dir" ] && mkdir -p $dir | |
| 63 | + | |
| 64 | + # remove addresses for a cleaner diff | |
| 65 | + # http://dummdida.tumblr.com/post/60924060451/binary-diff-between-libc-from-scientificlinux-and | |
| 66 | + $OBJDUMP -D $1 | sed "s/^[[:space:]]\+[0-9a-f]\+//" > $dis | |
| 67 | +} | |
| 68 | + | |
| 57 | 69 | dorecord() { |
| 58 | 70 | [ $# -eq 0 ] && usage |
| 59 | 71 | |
| @@ -63,16 +75,15 @@ dorecord() { · 3 unmodified lines | ||
| 63 | 75 | |
| 64 | 76 | OBJDUMP="${CROSS_COMPILE}objdump" |
| 65 | 77 | |
| 66 | − for f in $FILES; do | |
| 67 | − dir=$(get_output_dir $f) | |
| 68 | − base=${f##*/} | |
| 69 | − dis=$dir/${base%.o}.dis | |
| 70 | − | |
| 71 | − [ ! -d "$dir" ] && mkdir -p $dir | |
| 72 | − | |
| 73 | − # remove addresses for a cleaner diff | |
| 74 | − # http://dummdida.tumblr.com/post/60924060451/binary-diff-between-libc-from-scientificlinux-and | |
| 75 | − $OBJDUMP -D $f | sed "s/^[[:space:]]\+[0-9a-f]\+//" > $dis | |
| 78 | + for d in $FILES; do | |
| 79 | + if [ -d "$d" ]; then | |
| 80 | + for f in $(find $d -name '*.o') | |
| 81 | + do | |
| 82 | + do_objdump $f | |
| 83 | + done | |
| 84 | + else | |
| 85 | + do_objdump $d | |
| 86 | + fi | |
| 76 | 87 | done |
| 77 | 88 | } |
| 78 | 89 | |