mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
Some definitions in the arm64 kernel's cputype.h are kernel specific and cause perf build failures when the header is synced into tools. Stop checking arm64's cputype.h. In the future, the header in tools will be updated manually when teaching tools about new CPUs. Signed-off-by: Leo Yan <leo.yan@arm.com> Acked-by: Mark Rutland <mark.rutland@arm.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Ian Rogers <irogers@google.com> Cc: James Clark <james.clark@linaro.org> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
235 lines
7.4 KiB
Bash
Executable File
235 lines
7.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
YELLOW='\033[0;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
declare -a FILES=(
|
|
"include/uapi/linux/const.h"
|
|
"include/uapi/drm/drm.h"
|
|
"include/uapi/drm/i915_drm.h"
|
|
"include/uapi/linux/bits.h"
|
|
"include/uapi/linux/fadvise.h"
|
|
"include/uapi/linux/fscrypt.h"
|
|
"include/uapi/linux/genetlink.h"
|
|
"include/uapi/linux/if_addr.h"
|
|
"include/uapi/linux/in.h"
|
|
"include/uapi/linux/kcmp.h"
|
|
"include/uapi/linux/kvm.h"
|
|
"include/uapi/linux/neighbour.h"
|
|
"include/uapi/linux/netfilter.h"
|
|
"include/uapi/linux/netfilter_arp.h"
|
|
"include/uapi/linux/perf_event.h"
|
|
"include/uapi/linux/rtnetlink.h"
|
|
"include/uapi/linux/seccomp.h"
|
|
"include/uapi/linux/stat.h"
|
|
"include/linux/bits.h"
|
|
"include/vdso/bits.h"
|
|
"include/linux/cfi_types.h"
|
|
"include/linux/const.h"
|
|
"include/vdso/const.h"
|
|
"include/vdso/unaligned.h"
|
|
"include/linux/gfp_types.h"
|
|
"include/linux/hash.h"
|
|
"include/linux/list-sort.h"
|
|
"include/uapi/linux/hw_breakpoint.h"
|
|
"arch/x86/include/asm/cpufeatures.h"
|
|
"arch/x86/include/asm/inat_types.h"
|
|
"arch/x86/include/asm/emulate_prefix.h"
|
|
"arch/x86/include/asm/msr-index.h"
|
|
"arch/x86/lib/x86-opcode-map.txt"
|
|
"arch/x86/tools/gen-insn-attr-x86.awk"
|
|
"arch/arm/include/uapi/asm/perf_regs.h"
|
|
"arch/arm64/include/uapi/asm/perf_regs.h"
|
|
"arch/loongarch/include/uapi/asm/perf_regs.h"
|
|
"arch/mips/include/uapi/asm/perf_regs.h"
|
|
"arch/powerpc/include/uapi/asm/perf_regs.h"
|
|
"arch/s390/include/uapi/asm/perf_regs.h"
|
|
"arch/x86/include/uapi/asm/perf_regs.h"
|
|
"arch/x86/include/uapi/asm/kvm.h"
|
|
"arch/x86/include/uapi/asm/svm.h"
|
|
"arch/x86/include/uapi/asm/unistd.h"
|
|
"arch/x86/include/uapi/asm/vmx.h"
|
|
"arch/powerpc/include/uapi/asm/kvm.h"
|
|
"arch/s390/include/uapi/asm/kvm.h"
|
|
"arch/s390/include/uapi/asm/sie.h"
|
|
"arch/arm64/include/uapi/asm/kvm.h"
|
|
"arch/alpha/include/uapi/asm/errno.h"
|
|
"arch/mips/include/asm/errno.h"
|
|
"arch/mips/include/uapi/asm/errno.h"
|
|
"arch/parisc/include/uapi/asm/errno.h"
|
|
"arch/powerpc/include/uapi/asm/errno.h"
|
|
"arch/sparc/include/uapi/asm/errno.h"
|
|
"arch/x86/include/uapi/asm/errno.h"
|
|
"include/asm-generic/bitops/arch_hweight.h"
|
|
"include/asm-generic/bitops/const_hweight.h"
|
|
"include/asm-generic/bitops/__fls.h"
|
|
"include/asm-generic/bitops/fls.h"
|
|
"include/asm-generic/bitops/fls64.h"
|
|
"include/linux/coresight-pmu.h"
|
|
"include/uapi/asm-generic/errno.h"
|
|
"include/uapi/asm-generic/errno-base.h"
|
|
"include/uapi/asm-generic/ioctls.h"
|
|
"include/uapi/asm-generic/mman-common.h"
|
|
"include/uapi/asm-generic/unistd.h"
|
|
"scripts/syscall.tbl"
|
|
)
|
|
|
|
declare -a SYNC_CHECK_FILES=(
|
|
"arch/x86/include/asm/inat.h"
|
|
"arch/x86/include/asm/insn.h"
|
|
"arch/x86/lib/inat.c"
|
|
"arch/x86/lib/insn.c"
|
|
)
|
|
|
|
# These copies are under tools/perf/trace/beauty/ as they are not used to in
|
|
# building object files only by scripts in tools/perf/trace/beauty/ to generate
|
|
# tables that then gets included in .c files for things like id->string syscall
|
|
# tables (and the reverse lookup as well: string -> id)
|
|
|
|
declare -a BEAUTY_FILES=(
|
|
"arch/x86/include/asm/irq_vectors.h"
|
|
"arch/x86/include/uapi/asm/prctl.h"
|
|
"include/linux/socket.h"
|
|
"include/uapi/linux/fcntl.h"
|
|
"include/uapi/linux/fs.h"
|
|
"include/uapi/linux/mount.h"
|
|
"include/uapi/linux/prctl.h"
|
|
"include/uapi/linux/sched.h"
|
|
"include/uapi/linux/stat.h"
|
|
"include/uapi/linux/usbdevice_fs.h"
|
|
"include/uapi/linux/vhost.h"
|
|
"include/uapi/sound/asound.h"
|
|
)
|
|
|
|
declare -a FAILURES
|
|
|
|
check_2 () {
|
|
tools_file=$1
|
|
orig_file=$2
|
|
|
|
shift
|
|
shift
|
|
|
|
cmd="diff $* $tools_file $orig_file > /dev/null"
|
|
|
|
if [ -f "$orig_file" ] && ! eval "$cmd"
|
|
then
|
|
FAILURES+=(
|
|
"$tools_file $orig_file"
|
|
)
|
|
fi
|
|
}
|
|
|
|
check () {
|
|
file=$1
|
|
|
|
shift
|
|
|
|
check_2 "tools/$file" "$file" "$@"
|
|
}
|
|
|
|
beauty_check () {
|
|
file=$1
|
|
|
|
shift
|
|
|
|
check_2 "tools/perf/trace/beauty/$file" "$file" "$@"
|
|
}
|
|
|
|
check_ignore_some_hunks () {
|
|
orig_file="$1"
|
|
tools_file="tools/$orig_file"
|
|
hunks_to_ignore="tools/perf/check-header_ignore_hunks/$orig_file"
|
|
|
|
if [ ! -f "$hunks_to_ignore" ]; then
|
|
echo "$hunks_to_ignore not found. Skipping $orig_file check."
|
|
FAILURES+=(
|
|
"$tools_file $orig_file"
|
|
)
|
|
return
|
|
fi
|
|
|
|
cmd="diff -u \"$tools_file\" \"$orig_file\" | grep -vf \"$hunks_to_ignore\" | wc -l | grep -qw 0"
|
|
|
|
if [ -f "$orig_file" ] && ! eval "$cmd"
|
|
then
|
|
FAILURES+=(
|
|
"$tools_file $orig_file"
|
|
)
|
|
fi
|
|
}
|
|
|
|
|
|
# Check if we have the kernel headers (tools/perf/../../include), else
|
|
# we're probably on a detached tarball, so no point in trying to check
|
|
# differences.
|
|
if ! [ -d ../../include ]
|
|
then
|
|
echo -e "${YELLOW}Warning${NC}: Skipped check-headers due to missing ../../include"
|
|
exit 0
|
|
fi
|
|
|
|
cd ../..
|
|
|
|
# simple diff check
|
|
for i in "${FILES[@]}"
|
|
do
|
|
check "$i" -B
|
|
done
|
|
|
|
for i in "${SYNC_CHECK_FILES[@]}"
|
|
do
|
|
check "$i" '-I "^.*\/\*.*__ignore_sync_check__.*\*\/.*$"'
|
|
done
|
|
|
|
# diff with extra ignore lines
|
|
check 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>"'
|
|
check arch/x86/lib/memset_64.S '-I "^EXPORT_SYMBOL" -I "^#include <asm/export.h>" -I"^SYM_FUNC_START\(_LOCAL\)*(memset_\(erms\|orig\))"'
|
|
check arch/x86/include/asm/amd/ibs.h '-I "^#include .*/msr-index.h"'
|
|
check include/linux/unaligned.h '-I "^#include <linux/unaligned/packed_struct.h>" -I "^#include <asm/byteorder.h>" -I "^#pragma GCC diagnostic"'
|
|
check include/uapi/asm-generic/mman.h '-I "^#include <\(uapi/\)*asm-generic/mman-common\(-tools\)*.h>"'
|
|
check include/uapi/linux/mman.h '-I "^#include <\(uapi/\)*asm/mman.h>"'
|
|
check include/linux/build_bug.h '-I "^#\(ifndef\|endif\)\( \/\/\)* static_assert$"'
|
|
check include/linux/ctype.h '-I "isdigit("'
|
|
check lib/ctype.c '-I "^EXPORT_SYMBOL" -I "^#include <linux/export.h>" -B'
|
|
|
|
# diff non-symmetric files
|
|
check_2 tools/perf/arch/x86/entry/syscalls/syscall_32.tbl arch/x86/entry/syscalls/syscall_32.tbl
|
|
check_2 tools/perf/arch/x86/entry/syscalls/syscall_64.tbl arch/x86/entry/syscalls/syscall_64.tbl
|
|
check_2 tools/perf/arch/powerpc/entry/syscalls/syscall.tbl arch/powerpc/kernel/syscalls/syscall.tbl
|
|
check_2 tools/perf/arch/s390/entry/syscalls/syscall.tbl arch/s390/kernel/syscalls/syscall.tbl
|
|
check_2 tools/perf/arch/mips/entry/syscalls/syscall_n64.tbl arch/mips/kernel/syscalls/syscall_n64.tbl
|
|
check_2 tools/perf/arch/arm/entry/syscalls/syscall.tbl arch/arm/tools/syscall.tbl
|
|
check_2 tools/perf/arch/sh/entry/syscalls/syscall.tbl arch/sh/kernel/syscalls/syscall.tbl
|
|
check_2 tools/perf/arch/sparc/entry/syscalls/syscall.tbl arch/sparc/kernel/syscalls/syscall.tbl
|
|
check_2 tools/perf/arch/xtensa/entry/syscalls/syscall.tbl arch/xtensa/kernel/syscalls/syscall.tbl
|
|
check_2 tools/perf/arch/alpha/entry/syscalls/syscall.tbl arch/alpha/entry/syscalls/syscall.tbl
|
|
check_2 tools/perf/arch/parisc/entry/syscalls/syscall.tbl arch/parisc/entry/syscalls/syscall.tbl
|
|
check_2 tools/perf/arch/arm64/entry/syscalls/syscall_32.tbl arch/arm64/entry/syscalls/syscall_32.tbl
|
|
check_2 tools/perf/arch/arm64/entry/syscalls/syscall_64.tbl arch/arm64/entry/syscalls/syscall_64.tbl
|
|
|
|
for i in "${BEAUTY_FILES[@]}"
|
|
do
|
|
beauty_check "$i" -B
|
|
done
|
|
|
|
# check duplicated library files
|
|
check_2 tools/perf/util/hashmap.h tools/lib/bpf/hashmap.h
|
|
check_2 tools/perf/util/hashmap.c tools/lib/bpf/hashmap.c
|
|
|
|
# Files with larger differences
|
|
|
|
check_ignore_some_hunks lib/list_sort.c
|
|
|
|
cd tools/perf || exit
|
|
|
|
if [ ${#FAILURES[@]} -gt 0 ]
|
|
then
|
|
echo -e "${YELLOW}Warning${NC}: Kernel ABI header differences:"
|
|
for i in "${FAILURES[@]}"
|
|
do
|
|
echo " diff -u $i"
|
|
done
|
|
fi
|