Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7fa0e6db authored by Masahiro Yamada's avatar Masahiro Yamada Committed by Michal Marek
Browse files

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: default avatarMasahiro Yamada <yamada.m@jp.panasonic.com>
Acked-by: default avatarJason Cooper <jason@lakedaemon.net>
Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
parent 8ac28bee
Loading
Loading
Loading
Loading
+22 −11
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ TMPD=$SRCTREE/.tmp_objdiff

usage() {
	echo >&2 "Usage: $0 <command> <args>"
	echo >&2 "  record    <list of object files>"
	echo >&2 "  record    <list of object files or directories>"
	echo >&2 "  diff      <commitA> <commitB>"
	echo >&2 "  clean     all | <commit>"
	exit 1
@@ -54,6 +54,18 @@ get_output_dir() {
	echo $TMPD/$CMT${dir#$SRCTREE}
}

do_objdump() {
	dir=$(get_output_dir $1)
	base=${1##*/}
	dis=$dir/${base%.o}.dis

	[ ! -d "$dir" ] && mkdir -p $dir

	# remove addresses for a cleaner diff
	# http://dummdida.tumblr.com/post/60924060451/binary-diff-between-libc-from-scientificlinux-and
	$OBJDUMP -D $1 | sed "s/^[[:space:]]\+[0-9a-f]\+//" > $dis
}

dorecord() {
	[ $# -eq 0 ] && usage

@@ -63,16 +75,15 @@ dorecord() {

	OBJDUMP="${CROSS_COMPILE}objdump"

	for f in $FILES; do
		dir=$(get_output_dir $f)
		base=${f##*/}
		dis=$dir/${base%.o}.dis

		[ ! -d "$dir" ] && mkdir -p $dir

		# remove addresses for a cleaner diff
		# http://dummdida.tumblr.com/post/60924060451/binary-diff-between-libc-from-scientificlinux-and
		$OBJDUMP -D $f | sed "s/^[[:space:]]\+[0-9a-f]\+//" > $dis
	for d in $FILES; do
		if [ -d "$d" ]; then
			for f in $(find $d -name '*.o')
			do
				do_objdump $f
			done
		else
			do_objdump $d
		fi
	done
}