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