#!/bin/bash
# SPDX-License-Identifier: GPL-2.0

YELLOW='\033[0;33m'
NC='\033[0m' # No Color

declare -a FILES
FILES=(
  "include/uapi/linux/const.h"
  "include/uapi/drm/drm.h"
  "include/uapi/drm/i915_drm.h"
  "include/uapi/linux/fadvise.h"
  "include/uapi/linux/fcntl.h"
  "include/uapi/linux/fs.h"
  "include/uapi/linux/fscrypt.h"
  "include/uapi/linux/kcmp.h"
  "include/uapi/linux/kvm.h"
  "include/uapi/linux/in.h"
  "include/uapi/linux/mount.h"
  "include/uapi/linux/openat2.h"
  "include/uapi/linux/perf_event.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"
  "include/linux/bits.h"
  "include/vdso/bits.h"
  "include/linux/const.h"
  "include/vdso/const.h"
  "include/linux/hash.h"
  "include/linux/list-sort.h"
  "include/uapi/linux/hw_breakpoint.h"
  "arch/x86/include/asm/disabled-features.h"
  "arch/x86/include/asm/required-features.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/irq_vectors.h"
  "arch/x86/include/asm/msr-index.h"
  "arch/x86/include/uapi/asm/prctl.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/kvm_perf.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/kvm_perf.h"
  "arch/s390/include/uapi/asm/sie.h"
  "arch/arm/include/uapi/asm/kvm.h"
  "arch/arm64/include/uapi/asm/kvm.h"
  "arch/arm64/include/uapi/asm/unistd.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"
)

declare -a SYNC_CHECK_FILES
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
BEAUTY_FILES=(
  "include/linux/socket.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 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 [<\"]\(asm/\)*msr-index.h"'
check arch/arm64/include/asm/cputype.h '-I "^#include [<\"]\(asm/\)*sysreg.h"'
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'
check lib/list_sort.c		      '-I "^#include <linux/bug.h>"'

# diff non-symmetric files
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

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

cd tools/perf

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
