diff options
author | Masahiro Yamada <yamada.m@jp.panasonic.com> | 2014-06-09 11:16:37 +0900 |
---|---|---|
committer | Michal Marek <mmarek@suse.cz> | 2014-06-10 14:59:33 +0200 |
commit | 18165efa8203a34d82f60a1831ea290e7304c654 (patch) | |
tree | e9efe9cedb1119d94c4708d93cfed23396e6a41d /scripts/objdiff | |
parent | 1ecc8e489abfdaa6d8d1689f7ff62fdf1adda30c (diff) | |
download | linux-18165efa8203a34d82f60a1831ea290e7304c654.tar.gz linux-18165efa8203a34d82f60a1831ea290e7304c654.tar.bz2 linux-18165efa8203a34d82f60a1831ea290e7304c654.zip |
scripts: objdiff: improve path flexibility for record command
Prior to this commit, scripts/objdiff expected to be run at the top
directory and only the relative path of objects.
This commit provides more flexibility in terms of object path:
[1] scripts/objdiff can be run in any directory
For example,
$ scripts/objdiff record init/main.o
and
$ cd init; ../scripts/objdiff record main.o
produce the same result.
[2] Support absolute path for objects
$ scripts/objdiff record /home/foo/bar/linux/init/main.o
work as well.
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>
Diffstat (limited to 'scripts/objdiff')
-rwxr-xr-x | scripts/objdiff | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/scripts/objdiff b/scripts/objdiff index 6e72f9645983..499eb4bc1e8d 100755 --- a/scripts/objdiff +++ b/scripts/objdiff @@ -25,7 +25,7 @@ # # Note: 'make mrproper' will also remove .tmp_objdiff -SRCTREE=$(git rev-parse --show-toplevel 2>/dev/null) +SRCTREE=$(cd $(git rev-parse --show-toplevel 2>/dev/null); pwd) if [ -z "$SRCTREE" ]; then echo >&2 "ERROR: Not a git repository." @@ -42,6 +42,18 @@ usage() { exit 1 } +get_output_dir() { + dir=${1%/*} + + if [ "$dir" = "$1" ]; then + dir=. + fi + + dir=$(cd $dir; pwd) + + echo $TMPD/$CMT${dir#$SRCTREE} +} + dorecord() { [ $# -eq 0 ] && usage @@ -50,18 +62,16 @@ dorecord() { CMT="`git rev-parse --short HEAD`" OBJDUMP="${CROSS_COMPILE}objdump" - OBJDIFFD="$TMPD/$CMT" for f in $FILES; do - dn="${f%/*}" + dir=$(get_output_dir $f) bn="${f##*/}" - [ ! -d "$OBJDIFFD/$dn" ] && mkdir -p "$OBJDIFFD/$dn" + [ ! -d "$dir" ] && mkdir -p $dir # remove addresses for a more clear diff # http://dummdida.tumblr.com/post/60924060451/binary-diff-between-libc-from-scientificlinux-and - $OBJDUMP -D "$f" | sed "s/^[[:space:]]\+[0-9a-f]\+//" \ - >"$OBJDIFFD/$dn/$bn" + $OBJDUMP -D $f | sed "s/^[[:space:]]\+[0-9a-f]\+//" > $dir/$bn done } |