Commit-ID:  3bd51c5a371de917e4e7401c9df006b5998579df
Gitweb:     https://git.kernel.org/tip/3bd51c5a371de917e4e7401c9df006b5998579df
Author:     Josh Poimboeuf <jpoim...@redhat.com>
AuthorDate: Mon, 6 Nov 2017 07:21:51 -0600
Committer:  Ingo Molnar <mi...@kernel.org>
CommitDate: Tue, 7 Nov 2017 10:48:34 +0100

objtool: Move kernel headers/code sync check to a script

Replace the nasty diff checks in the objtool Makefile with a clean bash
script, and make the warnings more specific.

Heavily inspired by tools/perf/check-headers.sh.

Suggested-by: Ingo Molnar <mi...@kernel.org>
Signed-off-by: Josh Poimboeuf <jpoim...@redhat.com>
Cc: Linus Torvalds <torva...@linux-foundation.org>
Cc: Peter Zijlstra <pet...@infradead.org>
Cc: Thomas Gleixner <t...@linutronix.de>
Link: 
http://lkml.kernel.org/r/ab015f15ccd8c0c6008493c3c6ee3d495eaf2927.1509974346.git.jpoim...@redhat.com
Signed-off-by: Ingo Molnar <mi...@kernel.org>
---
 tools/objtool/Makefile      | 16 +---------------
 tools/objtool/sync-check.sh | 29 +++++++++++++++++++++++++++++
 2 files changed, 30 insertions(+), 15 deletions(-)

diff --git a/tools/objtool/Makefile b/tools/objtool/Makefile
index c6a19d9..6aaed25 100644
--- a/tools/objtool/Makefile
+++ b/tools/objtool/Makefile
@@ -43,22 +43,8 @@ include $(srctree)/tools/build/Makefile.include
 $(OBJTOOL_IN): fixdep FORCE
        @$(MAKE) $(build)=objtool
 
-# Busybox's diff doesn't have -I, avoid warning in that case
-#
 $(OBJTOOL): $(LIBSUBCMD) $(OBJTOOL_IN)
-       @(diff -I 2>&1 | grep -q 'option requires an argument' && \
-       test -d ../../kernel -a -d ../../tools -a -d ../objtool && (( \
-       diff arch/x86/lib/insn.c ../../arch/x86/lib/insn.c >/dev/null && \
-       diff arch/x86/lib/inat.c ../../arch/x86/lib/inat.c >/dev/null && \
-       diff arch/x86/lib/x86-opcode-map.txt 
../../arch/x86/lib/x86-opcode-map.txt >/dev/null && \
-       diff arch/x86/tools/gen-insn-attr-x86.awk 
../../arch/x86/tools/gen-insn-attr-x86.awk >/dev/null && \
-       diff arch/x86/include/asm/insn.h ../../arch/x86/include/asm/insn.h 
>/dev/null && \
-       diff arch/x86/include/asm/inat.h ../../arch/x86/include/asm/inat.h 
>/dev/null && \
-       diff arch/x86/include/asm/inat_types.h 
../../arch/x86/include/asm/inat_types.h >/dev/null) \
-       || echo "warning: objtool: x86 instruction decoder differs from kernel" 
>&2 )) || true
-       @(test -d ../../kernel -a -d ../../tools -a -d ../objtool && (( \
-       diff ../../arch/x86/include/asm/orc_types.h 
arch/x86/include/asm/orc_types.h >/dev/null) \
-       || echo "warning: objtool: orc_types.h differs from kernel" >&2 )) || 
true
+       @./sync-check.sh
        $(QUIET_LINK)$(CC) $(OBJTOOL_IN) $(LDFLAGS) -o $@
 
 
diff --git a/tools/objtool/sync-check.sh b/tools/objtool/sync-check.sh
new file mode 100755
index 0000000..1470e74
--- /dev/null
+++ b/tools/objtool/sync-check.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+
+FILES='
+arch/x86/lib/insn.c
+arch/x86/lib/inat.c
+arch/x86/lib/x86-opcode-map.txt
+arch/x86/tools/gen-insn-attr-x86.awk
+arch/x86/include/asm/insn.h
+arch/x86/include/asm/inat.h
+arch/x86/include/asm/inat_types.h
+arch/x86/include/asm/orc_types.h
+'
+
+check()
+{
+       local file=$1
+
+       diff $file ../../$file > /dev/null ||
+               echo "Warning: synced file at 'tools/objtool/$file' differs 
from latest kernel version at '$file'"
+}
+
+if [ ! -d ../../kernel ] || [ ! -d ../../tools ] || [ ! -d ../objtool ]; then
+       exit 0
+fi
+
+for i in $FILES; do
+  check $i
+done

Reply via email to