0f6c62dbed1ca809bd7029b3a081799b5f901d2b
[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 # Filter out symbols suffixed with a . for icc
40 for SYM in `objdump -t $OBJFILE |awk '{
41         if ($2 != "l" && $4 == ".text.experimental" && !($NF ~ /\.$/)) {
42                 print $NF
43         }
44 }'`
45 do
46         $LIST_SYMBOL -S EXPERIMENTAL -s $SYM -q $MAPFILE || {
47                 cat >&2 <<- END_OF_MESSAGE
48                 $SYM is flagged as experimental
49                 but is not listed in version map
50                 Please add $SYM to the version map
51                 END_OF_MESSAGE
52                 ret=1
53         }
54 done
55
56 exit $ret