[Feature] add GA346 baseline version
Change-Id: Ic62933698569507dcf98240cdf5d9931ae34348f
diff --git a/src/kernel/linux/v4.19/scripts/abi/FinalABI.sh b/src/kernel/linux/v4.19/scripts/abi/FinalABI.sh
new file mode 100755
index 0000000..ec1fc5f
--- /dev/null
+++ b/src/kernel/linux/v4.19/scripts/abi/FinalABI.sh
@@ -0,0 +1,104 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+
+green='\e[0;32m'
+red='\e[0;31m'
+eol='\e[0m'
+
+BASE_DIR=$PWD
+ABI_DIR=$BASE_DIR/scripts/abi
+ABI_XML_DIR=$BASE_DIR/scripts/abi/abi_xml
+ABI_RESULT_DIR=$BASE_DIR/scripts/abi/abi_xml
+ORI_ABI_XML=abi_ori.xml
+TARGET_ABI_XML=abi_target.xml
+ABI_REPORT=abi-report.out
+FINAL_ABI_REPORT=abi-report-final.out
+
+#include abi_white_list to bypass violations
+source $ABI_DIR/abi_white_list
+#Find Delete/Changed/Added and leaf type change
+check_arr=("\[D\]" "\[C\]" "\[A\]" "^'.*' changed:$")
+
+is_abi_violation_bypass=0
+declare -i abi_violation_count=0
+
+function print_usage(){
+ echo -e "${green}Script for auto generate \
+$ABI_RESULT_DIR/$FINAL_ABI_REPORT from $ABI_RESULT_DIR/$ABI_REPORT ${eol}"
+ echo ""
+ echo -e "${red}Command for local test:${eol}"
+ echo ""
+ echo -e "${green}Example:${eol} ${red}./scripts/abi/FinalABI.sh${eol}"
+ echo ""
+ echo -e "${green}Script for auto generate \
+$FINAL_ABI_REPORT by specified abi_result_path ${eol}"
+ echo ""
+ echo -e "${red}Command for local test:${eol}"
+ echo "[abi_result_path] ./scripts/abi/FinalABI.sh"
+ echo ""
+ echo -e "${green}Description:${eol}"
+ echo "[abi_result_path]: absolute path to generate fianl abi report"
+ echo ""
+ echo -e "${green}Example:${eol} ${red}abi_result_path=absolute_path \
+/scripts/abi/FinalABI.sh${eol}"
+ exit -1
+}
+
+if [ -z "$abi_result_path" ]
+then
+ echo "ABI_XML_DIR=$ABI_XML_DIR"
+ echo "ABI_RESULT_DIR=$ABI_RESULT_DIR"
+else
+ ABI_RESULT_DIR=$abi_result_path
+ echo "ABI_XML_DIR=$ABI_XML_DIR"
+ echo "ABI_RESULT_DIR=$ABI_RESULT_DIR"
+fi
+
+if [[ "$1" == "h" ]] || [[ "$1" == "help" ]]
+then
+ print_usage
+fi
+
+#remove temp files first
+rm -rf $ABI_RESULT_DIR/$FINAL_ABI_REPORT
+
+exec < $ABI_RESULT_DIR/$ABI_REPORT
+while read line
+do
+ for ((i=0; i < ${#check_arr[@]}; i++))
+ do
+ if [[ $line =~ ${check_arr[$i]} ]]
+ then
+ is_abi_violation_bypass=0
+ for ((j=0; j < ${#bypass_arr[@]}; j++))
+ do
+ if [[ $line =~ ${bypass_arr[$j]} ]]
+ then
+ is_abi_violation_bypass=1
+ break
+ fi
+ done
+
+ if [[ $is_abi_violation_bypass == 0 ]]
+ then
+ abi_violation_count+=1
+ fi
+ break
+ fi
+ done
+ #write $line to $FINAL_ABI_REPORT if $is_abi_violation = 0
+ if [[ $is_abi_violation_bypass == 0 ]]
+ then
+ echo $line >> $ABI_RESULT_DIR/$FINAL_ABI_REPORT
+ fi
+done
+
+if [[ $abi_violation_count == 0 ]]
+then
+ echo "ABI Monitor check PASS!!!"
+else
+ echo "ABI Monitor check FAILED!!!\
+Final abi_violation_count=$abi_violation_count!!!"
+echo "Please check report: $ABI_RESULT_DIR/$FINAL_ABI_REPORT for details."
+fi
+exit $abi_violation_count