diff options
author | Masahiro Yamada <yamada.m@jp.panasonic.com> | 2014-06-08 22:16:40 -0400 |
---|---|---|
committer | Michal Marek <mmarek@suse.cz> | 2014-06-10 08:59:33 -0400 |
commit | 7fa0e6db3cedc9b70d68a4170f1352e2b1aa0f90 (patch) | |
tree | 7e558805d12d154423ae494d4e9c3bdac37b2d74 | |
parent | 8ac28bee76eec006aac5ba5c418878a607d53a9b (diff) |
scripts: objdiff: support directories for the augument of record command
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.
Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Acked-by: Jason Cooper <jason@lakedaemon.net>
Signed-off-by: Michal Marek <mmarek@suse.cz>
-rwxr-xr-x | scripts/objdiff | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/scripts/objdiff b/scripts/objdiff index 0644898d5fab..62e51dae2138 100755 --- a/scripts/objdiff +++ b/scripts/objdiff | |||
@@ -36,7 +36,7 @@ TMPD=$SRCTREE/.tmp_objdiff | |||
36 | 36 | ||
37 | usage() { | 37 | usage() { |
38 | echo >&2 "Usage: $0 <command> <args>" | 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 | echo >&2 " diff <commitA> <commitB>" | 40 | echo >&2 " diff <commitA> <commitB>" |
41 | echo >&2 " clean all | <commit>" | 41 | echo >&2 " clean all | <commit>" |
42 | exit 1 | 42 | exit 1 |
@@ -54,6 +54,18 @@ get_output_dir() { | |||
54 | echo $TMPD/$CMT${dir#$SRCTREE} | 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 | dorecord() { | 69 | dorecord() { |
58 | [ $# -eq 0 ] && usage | 70 | [ $# -eq 0 ] && usage |
59 | 71 | ||
@@ -63,16 +75,15 @@ dorecord() { | |||
63 | 75 | ||
64 | OBJDUMP="${CROSS_COMPILE}objdump" | 76 | OBJDUMP="${CROSS_COMPILE}objdump" |
65 | 77 | ||
66 | for f in $FILES; do | 78 | for d in $FILES; do |
67 | dir=$(get_output_dir $f) | 79 | if [ -d "$d" ]; then |
68 | base=${f##*/} | 80 | for f in $(find $d -name '*.o') |
69 | dis=$dir/${base%.o}.dis | 81 | do |
70 | 82 | do_objdump $f | |
71 | [ ! -d "$dir" ] && mkdir -p $dir | 83 | done |
72 | 84 | else | |
73 | # remove addresses for a cleaner diff | 85 | do_objdump $d |
74 | # http://dummdida.tumblr.com/post/60924060451/binary-diff-between-libc-from-scientificlinux-and | 86 | fi |
75 | $OBJDUMP -D $f | sed "s/^[[:space:]]\+[0-9a-f]\+//" > $dis | ||
76 | done | 87 | done |
77 | } | 88 | } |
78 | 89 | ||