buildtools: add script to check experimental API exports
This tools reads the given version map for a directory, and checks to ensure that, for each symbol listed in the export list, the corresponding definition is tagged as __rte_experimental, erroring out if its not. In this way, we can ensure that the EXPERIMENTAL api is kept in sync with the tags Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
This commit is contained in:
parent
0d68533617
commit
a4bcd61de8
@ -77,6 +77,7 @@ M: Neil Horman <nhorman@tuxdriver.com>
|
||||
F: lib/librte_compat/
|
||||
F: doc/guides/rel_notes/deprecation.rst
|
||||
F: devtools/validate-abi.sh
|
||||
F: buildtools/check-experimental-syms.sh
|
||||
|
||||
Driver information
|
||||
F: buildtools/pmdinfogen/
|
||||
|
32
buildtools/check-experimental-syms.sh
Executable file
32
buildtools/check-experimental-syms.sh
Executable file
@ -0,0 +1,32 @@
|
||||
#!/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
|
||||
echo "$SYM is not flagged as experimental"
|
||||
echo "but is listed in version map"
|
||||
echo "Please add __rte_experimental to the definition of $SYM"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
exit 0
|
||||
|
Loading…
Reference in New Issue
Block a user