Commit 7fa0e6db3cedc9b70d68a4170f1352e2b1aa0f90

Authored by Masahiro Yamada
Committed by Michal Marek
1 parent 8ac28bee76

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>

Showing 1 changed file with 22 additions and 11 deletions Side-by-side Diff

... ... @@ -36,7 +36,7 @@
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 @@
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 @@
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