numam-dpdk/buildtools/check-experimental-syms.sh
Neil Horman 49bcce1383 buildtools: prevent experimental symbol match on substring
The experimental symbol check script matched on the regexes
"\.text.*$SYM" and "\.text\.experimental.*$SYM" which allows for
substring matches.
If a symbol is leading substring of another one (e.g. symbol foo
is a substring of symbol foobar), it would match on symbols
when it shouldn't.

It is fixed by matching additionally on the end of line
so that symbols are an exact match.

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
2018-10-11 13:57:29 +02:00

35 lines
650 B
Bash
Executable File

#!/bin/sh
# SPDX-License-Identifier: BSD-3-Clause
MAPFILE=$1
OBJFILE=$2
if [ -d $MAPFILE ]
then
exit 0
fi
for i in `awk 'BEGIN {found=0}
/.*EXPERIMENTAL.*/ {found=1}
/.*}.*;/ {found=0}
/.*;/ {if (found == 1) print $1}' $MAPFILE`
do
SYM=`echo $i | sed -e"s/;//"`
objdump -t $OBJFILE | grep -q "\.text.*$SYM$"
IN_TEXT=$?
objdump -t $OBJFILE | grep -q "\.text\.experimental.*$SYM$"
IN_EXP=$?
if [ $IN_TEXT -eq 0 -a $IN_EXP -ne 0 ]
then
cat >&2 <<- END_OF_MESSAGE
$SYM is not flagged as experimental
but is listed in version map
Please add __rte_experimental to the definition of $SYM
END_OF_MESSAGE
exit 1
fi
done
exit 0