653756e274e00db705c603b6810c4b031a1bdf2d
[dpdk.git] / buildtools / check-experimental-syms.sh
1 #!/bin/sh
2
3 # SPDX-License-Identifier: BSD-3-Clause
4
5 MAPFILE=$1
6 OBJFILE=$2
7
8 LIST_SYMBOL=$RTE_SDK/buildtools/map-list-symbol.sh
9
10 # added check for "make -C test/" usage
11 if [ ! -e $MAPFILE ] || [ ! -f $OBJFILE ]
12 then
13         exit 0
14 fi
15
16 if [ -d $MAPFILE ]
17 then
18         exit 0
19 fi
20
21 ret=0
22 for SYM in `$LIST_SYMBOL -S EXPERIMENTAL $MAPFILE`
23 do
24         objdump -t $OBJFILE | grep -q "\.text.*$SYM$"
25         IN_TEXT=$?
26         objdump -t $OBJFILE | grep -q "\.text\.experimental.*$SYM$"
27         IN_EXP=$?
28         if [ $IN_TEXT -eq 0 -a $IN_EXP -ne 0 ]
29         then
30                 cat >&2 <<- END_OF_MESSAGE
31                 $SYM is not flagged as experimental
32                 but is listed in version map
33                 Please add __rte_experimental to the definition of $SYM
34                 END_OF_MESSAGE
35                 ret=1
36         fi
37 done
38
39 for SYM in `objdump -t $OBJFILE |awk '{
40         if ($2 != "l" && $4 == ".text.experimental") {
41                 print $NF
42         }
43 }'`
44 do
45         $LIST_SYMBOL -S EXPERIMENTAL -s $SYM -q $MAPFILE || {
46                 cat >&2 <<- END_OF_MESSAGE
47                 $SYM is flagged as experimental
48                 but is not listed in version map
49                 Please add $SYM to the version map
50                 END_OF_MESSAGE
51                 ret=1
52         }
53 done
54
55 exit $ret