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 <mingo@kernel.org> Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Link: http://lkml.kernel.org/r/ab015f15ccd8c0c6008493c3c6ee3d495eaf2927.1509974346.git.jpoimboe@redhat.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
6a77cff819
commit
3bd51c5a37
|
@ -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 $@
|
||||
|
||||
|
||||
|
|
29
tools/objtool/sync-check.sh
Executable file
29
tools/objtool/sync-check.sh
Executable file
|
@ -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
|
Loading…
Reference in a new issue