1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0
3
4if [ -z "$SRCARCH" ]; then
5	echo 'sync-check.sh: error: missing $SRCARCH environment variable' >&2
6	exit 1
7fi
8
9FILES="include/linux/objtool.h"
10
11if [ "$SRCARCH" = "x86" ]; then
12FILES="$FILES
13arch/x86/include/asm/nops.h
14arch/x86/include/asm/inat_types.h
15arch/x86/include/asm/orc_types.h
16arch/x86/include/asm/emulate_prefix.h
17arch/x86/lib/x86-opcode-map.txt
18arch/x86/tools/gen-insn-attr-x86.awk
19include/linux/static_call_types.h
20"
21
22SYNC_CHECK_FILES='
23arch/x86/include/asm/inat.h
24arch/x86/include/asm/insn.h
25arch/x86/lib/inat.c
26arch/x86/lib/insn.c
27'
28fi
29
30check_2 () {
31  file1=$1
32  file2=$2
33
34  shift
35  shift
36
37  cmd="diff $* $file1 $file2 > /dev/null"
38
39  test -f $file2 && {
40    eval $cmd || {
41      echo "Warning: Kernel ABI header at '$file1' differs from latest version at '$file2'" >&2
42      echo diff -u $file1 $file2
43    }
44  }
45}
46
47check () {
48  file=$1
49
50  shift
51
52  check_2 tools/$file $file $*
53}
54
55if [ ! -d ../../kernel ] || [ ! -d ../../tools ] || [ ! -d ../objtool ]; then
56	exit 0
57fi
58
59cd ../..
60
61while read -r file_entry; do
62    if [ -z "$file_entry" ]; then
63	continue
64    fi
65
66    check $file_entry
67done <<EOF
68$FILES
69EOF
70
71if [ "$SRCARCH" = "x86" ]; then
72	for i in $SYNC_CHECK_FILES; do
73		check $i '-I "^.*\/\*.*__ignore_sync_check__.*\*\/.*$"'
74	done
75fi
76