blob: 5d4f74b301029de6eb5d3c865df1f1a89f9f97fa [file] [log] [blame]
Ian Rogersd6748382023-06-05 13:34:25 -07001#!/bin/bash
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01002# SPDX-License-Identifier: GPL-2.0
Jiri Olsaaeafd622016-12-06 14:18:51 +01003
Ian Rogersd6748382023-06-05 13:34:25 -07004YELLOW='\033[0;33m'
5NC='\033[0m' # No Color
Jiri Olsaaeafd622016-12-06 14:18:51 +01006
Ian Rogersd6748382023-06-05 13:34:25 -07007declare -a FILES
8FILES=(
9 "include/uapi/linux/const.h"
10 "include/uapi/drm/drm.h"
11 "include/uapi/drm/i915_drm.h"
Arnaldo Carvalho de Melo450f9412024-04-26 15:52:09 -030012 "include/uapi/linux/bits.h"
Ian Rogersd6748382023-06-05 13:34:25 -070013 "include/uapi/linux/fadvise.h"
Ian Rogersd6748382023-06-05 13:34:25 -070014 "include/uapi/linux/fscrypt.h"
15 "include/uapi/linux/kcmp.h"
16 "include/uapi/linux/kvm.h"
17 "include/uapi/linux/in.h"
Ian Rogersd6748382023-06-05 13:34:25 -070018 "include/uapi/linux/perf_event.h"
Arnaldo Carvalho de Melo417ecb62023-09-13 08:35:09 -030019 "include/uapi/linux/seccomp.h"
Arnaldo Carvalho de Melo61ba0752024-04-18 18:15:33 -030020 "include/uapi/linux/stat.h"
Ian Rogersd6748382023-06-05 13:34:25 -070021 "include/linux/bits.h"
22 "include/vdso/bits.h"
23 "include/linux/const.h"
24 "include/vdso/const.h"
25 "include/linux/hash.h"
26 "include/linux/list-sort.h"
27 "include/uapi/linux/hw_breakpoint.h"
28 "arch/x86/include/asm/disabled-features.h"
29 "arch/x86/include/asm/required-features.h"
30 "arch/x86/include/asm/cpufeatures.h"
31 "arch/x86/include/asm/inat_types.h"
32 "arch/x86/include/asm/emulate_prefix.h"
Ian Rogersd6748382023-06-05 13:34:25 -070033 "arch/x86/include/asm/msr-index.h"
Ian Rogersd6748382023-06-05 13:34:25 -070034 "arch/x86/lib/x86-opcode-map.txt"
35 "arch/x86/tools/gen-insn-attr-x86.awk"
36 "arch/arm/include/uapi/asm/perf_regs.h"
37 "arch/arm64/include/uapi/asm/perf_regs.h"
38 "arch/loongarch/include/uapi/asm/perf_regs.h"
39 "arch/mips/include/uapi/asm/perf_regs.h"
40 "arch/powerpc/include/uapi/asm/perf_regs.h"
41 "arch/s390/include/uapi/asm/perf_regs.h"
42 "arch/x86/include/uapi/asm/perf_regs.h"
43 "arch/x86/include/uapi/asm/kvm.h"
44 "arch/x86/include/uapi/asm/kvm_perf.h"
45 "arch/x86/include/uapi/asm/svm.h"
46 "arch/x86/include/uapi/asm/unistd.h"
47 "arch/x86/include/uapi/asm/vmx.h"
48 "arch/powerpc/include/uapi/asm/kvm.h"
49 "arch/s390/include/uapi/asm/kvm.h"
50 "arch/s390/include/uapi/asm/kvm_perf.h"
51 "arch/s390/include/uapi/asm/sie.h"
52 "arch/arm/include/uapi/asm/kvm.h"
53 "arch/arm64/include/uapi/asm/kvm.h"
54 "arch/arm64/include/uapi/asm/unistd.h"
55 "arch/alpha/include/uapi/asm/errno.h"
56 "arch/mips/include/asm/errno.h"
57 "arch/mips/include/uapi/asm/errno.h"
58 "arch/parisc/include/uapi/asm/errno.h"
59 "arch/powerpc/include/uapi/asm/errno.h"
60 "arch/sparc/include/uapi/asm/errno.h"
61 "arch/x86/include/uapi/asm/errno.h"
62 "include/asm-generic/bitops/arch_hweight.h"
63 "include/asm-generic/bitops/const_hweight.h"
64 "include/asm-generic/bitops/__fls.h"
65 "include/asm-generic/bitops/fls.h"
66 "include/asm-generic/bitops/fls64.h"
67 "include/linux/coresight-pmu.h"
68 "include/uapi/asm-generic/errno.h"
69 "include/uapi/asm-generic/errno-base.h"
70 "include/uapi/asm-generic/ioctls.h"
71 "include/uapi/asm-generic/mman-common.h"
72 "include/uapi/asm-generic/unistd.h"
73)
74
75declare -a SYNC_CHECK_FILES
76SYNC_CHECK_FILES=(
77 "arch/x86/include/asm/inat.h"
78 "arch/x86/include/asm/insn.h"
79 "arch/x86/lib/inat.c"
80 "arch/x86/lib/insn.c"
81)
Borislav Petkovd30c7b82021-02-22 13:34:40 +010082
Arnaldo Carvalho de Melod758d5d2020-09-29 08:56:38 -030083# These copies are under tools/perf/trace/beauty/ as they are not used to in
84# building object files only by scripts in tools/perf/trace/beauty/ to generate
85# tables that then gets included in .c files for things like id->string syscall
86# tables (and the reverse lookup as well: string -> id)
87
Ian Rogersd6748382023-06-05 13:34:25 -070088declare -a BEAUTY_FILES
89BEAUTY_FILES=(
Arnaldo Carvalho de Meloc8bfe3f2024-03-11 17:07:33 -030090 "arch/x86/include/asm/irq_vectors.h"
Arnaldo Carvalho de Meloeb01fe72024-03-11 17:07:33 -030091 "arch/x86/include/uapi/asm/prctl.h"
Ian Rogersd6748382023-06-05 13:34:25 -070092 "include/linux/socket.h"
Arnaldo Carvalho de Melo3d6cfba2024-03-19 14:49:32 -030093 "include/uapi/linux/fcntl.h"
Arnaldo Carvalho de Melofaf72172024-03-11 17:07:33 -030094 "include/uapi/linux/fs.h"
Arnaldo Carvalho de Meloab331612024-03-11 17:07:33 -030095 "include/uapi/linux/mount.h"
Arnaldo Carvalho de Meloeb01fe72024-03-11 17:07:33 -030096 "include/uapi/linux/prctl.h"
Arnaldo Carvalho de Melo2316ef52024-03-19 14:49:32 -030097 "include/uapi/linux/sched.h"
Arnaldo Carvalho de Melof122b3d2024-03-19 14:49:32 -030098 "include/uapi/linux/stat.h"
Arnaldo Carvalho de Melo44512bd2024-03-11 17:07:33 -030099 "include/uapi/linux/usbdevice_fs.h"
Arnaldo Carvalho de Melo4962e192024-03-11 17:07:33 -0300100 "include/uapi/linux/vhost.h"
Arnaldo Carvalho de Melo7050e332024-03-11 17:07:33 -0300101 "include/uapi/sound/asound.h"
Ian Rogersd6748382023-06-05 13:34:25 -0700102)
103
104declare -a FAILURES
Arnaldo Carvalho de Melod758d5d2020-09-29 08:56:38 -0300105
Jiri Olsa582472972018-04-23 11:08:16 +0200106check_2 () {
Ian Rogersd6748382023-06-05 13:34:25 -0700107 tools_file=$1
108 orig_file=$2
Jiri Olsa582472972018-04-23 11:08:16 +0200109
110 shift
111 shift
112
Ian Rogersd6748382023-06-05 13:34:25 -0700113 cmd="diff $* $tools_file $orig_file > /dev/null"
Jiri Olsa582472972018-04-23 11:08:16 +0200114
Ian Rogersd6748382023-06-05 13:34:25 -0700115 if [ -f "$orig_file" ] && ! eval "$cmd"
116 then
117 FAILURES+=(
118 "$tools_file $orig_file"
119 )
120 fi
Jiri Olsa582472972018-04-23 11:08:16 +0200121}
122
Jiri Olsaaeafd622016-12-06 14:18:51 +0100123check () {
124 file=$1
Jiri Olsaaeafd622016-12-06 14:18:51 +0100125
126 shift
Jiri Olsaaeafd622016-12-06 14:18:51 +0100127
Kajol Jaine9365842023-07-09 23:57:49 +0530128 check_2 "tools/$file" "$file" "$@"
Jiri Olsaaeafd622016-12-06 14:18:51 +0100129}
130
Arnaldo Carvalho de Melod758d5d2020-09-29 08:56:38 -0300131beauty_check () {
132 file=$1
133
134 shift
135
Kajol Jaine9365842023-07-09 23:57:49 +0530136 check_2 "tools/perf/trace/beauty/$file" "$file" "$@"
Arnaldo Carvalho de Melod758d5d2020-09-29 08:56:38 -0300137}
138
Arnaldo Carvalho de Melod7e05ce2017-10-16 15:53:08 -0300139# Check if we have the kernel headers (tools/perf/../../include), else
140# we're probably on a detached tarball, so no point in trying to check
141# differences.
Ian Rogersd6748382023-06-05 13:34:25 -0700142if ! [ -d ../../include ]
143then
144 echo -e "${YELLOW}Warning${NC}: Skipped check-headers due to missing ../../include"
145 exit 0
146fi
Arnaldo Carvalho de Melod7e05ce2017-10-16 15:53:08 -0300147
Jiri Olsa7ea6e982018-08-13 13:15:03 +0200148cd ../..
149
Jiri Olsaaeafd622016-12-06 14:18:51 +0100150# simple diff check
Ian Rogersd6748382023-06-05 13:34:25 -0700151for i in "${FILES[@]}"
152do
153 check "$i" -B
Jiri Olsaaeafd622016-12-06 14:18:51 +0100154done
155
Ian Rogersd6748382023-06-05 13:34:25 -0700156for i in "${SYNC_CHECK_FILES[@]}"
157do
158 check "$i" '-I "^.*\/\*.*__ignore_sync_check__.*\*\/.*$"'
Borislav Petkovd30c7b82021-02-22 13:34:40 +0100159done
160
Jiri Olsaaeafd622016-12-06 14:18:51 +0100161# diff with extra ignore lines
Arnaldo Carvalho de Melo4402e362019-12-02 11:40:57 -0300162check arch/x86/lib/memcpy_64.S '-I "^EXPORT_SYMBOL" -I "^#include <asm/export.h>" -I"^SYM_FUNC_START\(_LOCAL\)*(memcpy_\(erms\|orig\))" -I"^#include <linux/cfi_types.h>"'
Arnaldo Carvalho de Melobd5c6b82019-12-02 11:40:57 -0300163check arch/x86/lib/memset_64.S '-I "^EXPORT_SYMBOL" -I "^#include <asm/export.h>" -I"^SYM_FUNC_START\(_LOCAL\)*(memset_\(erms\|orig\))"'
Kim Phillipsdde994d2021-08-17 17:15:08 -0500164check arch/x86/include/asm/amd-ibs.h '-I "^#include [<\"]\(asm/\)*msr-index.h"'
Ali Saidi13143762022-03-24 18:33:20 +0000165check arch/arm64/include/asm/cputype.h '-I "^#include [<\"]\(asm/\)*sysreg.h"'
Al Viro5f60d5f2024-10-01 15:35:57 -0400166check include/linux/unaligned.h '-I "^#include <linux/unaligned/packed_struct.h>" -I "^#include <asm/byteorder.h>" -I "^#pragma GCC diagnostic"'
Arnaldo Carvalho de Melobe709d42019-03-25 14:06:07 -0300167check include/uapi/asm-generic/mman.h '-I "^#include <\(uapi/\)*asm-generic/mman-common\(-tools\)*.h>"'
Jiri Olsa15019e92018-04-23 11:08:15 +0200168check include/uapi/linux/mman.h '-I "^#include <\(uapi/\)*asm/mman.h>"'
Arnaldo Carvalho de Meloe3698b22020-04-14 10:27:39 -0300169check include/linux/build_bug.h '-I "^#\(ifndef\|endif\)\( \/\/\)* static_assert$"'
Arnaldo Carvalho de Melo3052ba52019-06-25 17:27:31 -0300170check include/linux/ctype.h '-I "isdigit("'
171check lib/ctype.c '-I "^EXPORT_SYMBOL" -I "^#include <linux/export.h>" -B'
Ian Rogers92ec3cc2021-10-15 10:21:12 -0700172check lib/list_sort.c '-I "^#include <linux/bug.h>"'
Jiri Olsa7ea6e982018-08-13 13:15:03 +0200173
Jiri Olsac9b51a02018-08-13 13:15:04 +0200174# diff non-symmetric files
Arnaldo Carvalho de Melo0e7eb232024-08-30 19:53:47 -0300175check_2 tools/perf/arch/x86/entry/syscalls/syscall_32.tbl arch/x86/entry/syscalls/syscall_32.tbl
Jiri Olsac9b51a02018-08-13 13:15:04 +0200176check_2 tools/perf/arch/x86/entry/syscalls/syscall_64.tbl arch/x86/entry/syscalls/syscall_64.tbl
Tiezhu Yang9bad32b2020-12-18 15:59:21 +0800177check_2 tools/perf/arch/powerpc/entry/syscalls/syscall.tbl arch/powerpc/kernel/syscalls/syscall.tbl
Tiezhu Yang22ffc3f2020-12-18 15:59:22 +0800178check_2 tools/perf/arch/s390/entry/syscalls/syscall.tbl arch/s390/kernel/syscalls/syscall.tbl
Tiezhu Yangd9fd5a72021-02-04 11:35:24 +0800179check_2 tools/perf/arch/mips/entry/syscalls/syscall_n64.tbl arch/mips/kernel/syscalls/syscall_n64.tbl
Jiri Olsac9b51a02018-08-13 13:15:04 +0200180
Ian Rogersd6748382023-06-05 13:34:25 -0700181for i in "${BEAUTY_FILES[@]}"
182do
183 beauty_check "$i" -B
Arnaldo Carvalho de Melod758d5d2020-09-29 08:56:38 -0300184done
Arnaldo Carvalho de Melof3cf7fa2020-08-12 08:43:51 -0300185
Ian Rogerseee19502020-05-15 15:17:29 -0700186# check duplicated library files
187check_2 tools/perf/util/hashmap.h tools/lib/bpf/hashmap.h
188check_2 tools/perf/util/hashmap.c tools/lib/bpf/hashmap.c
189
Kajol Jaine9365842023-07-09 23:57:49 +0530190cd tools/perf || exit
Ian Rogersd6748382023-06-05 13:34:25 -0700191
192if [ ${#FAILURES[@]} -gt 0 ]
193then
194 echo -e "${YELLOW}Warning${NC}: Kernel ABI header differences:"
195 for i in "${FAILURES[@]}"
196 do
197 echo " diff -u $i"
198 done
199fi