14c824734SHaiyue Wang#!/bin/sh 24c824734SHaiyue Wang 34c824734SHaiyue Wang# SPDX-License-Identifier: BSD-3-Clause 44c824734SHaiyue Wang 54c824734SHaiyue WangMAPFILE=$1 64c824734SHaiyue WangOBJFILE=$2 74c824734SHaiyue Wang 8*cf8a9e93SDavid MarchandROOTDIR=$(readlink -f $(dirname $(readlink -f $0))/..) 9*cf8a9e93SDavid MarchandLIST_SYMBOL=$ROOTDIR/buildtools/map-list-symbol.sh 10*cf8a9e93SDavid MarchandCHECK_SYMBOL_MAPS=$ROOTDIR/devtools/check-symbol-maps.sh 114c824734SHaiyue Wang 124c824734SHaiyue Wang# added check for "make -C test/" usage 134c824734SHaiyue Wangif [ ! -e $MAPFILE ] || [ ! -f $OBJFILE ] 144c824734SHaiyue Wangthen 154c824734SHaiyue Wang exit 0 164c824734SHaiyue Wangfi 174c824734SHaiyue Wang 184c824734SHaiyue Wangif [ -d $MAPFILE ] 194c824734SHaiyue Wangthen 204c824734SHaiyue Wang exit 0 214c824734SHaiyue Wangfi 224c824734SHaiyue Wang 23e1ab26dfSThomas MonjalonDUMPFILE=$(mktemp -t dpdk.${0##*/}.objdump.XXXXXX) 244c824734SHaiyue Wangtrap 'rm -f "$DUMPFILE"' EXIT 254c824734SHaiyue Wangobjdump -t $OBJFILE >$DUMPFILE 264c824734SHaiyue Wang 274c824734SHaiyue Wangret=0 28*cf8a9e93SDavid Marchand 29*cf8a9e93SDavid Marchandif ! $CHECK_SYMBOL_MAPS $MAPFILE; then 30*cf8a9e93SDavid Marchand ret=1 31*cf8a9e93SDavid Marchandfi 32*cf8a9e93SDavid Marchand 334c824734SHaiyue Wangfor SYM in `$LIST_SYMBOL -S EXPERIMENTAL $MAPFILE |cut -d ' ' -f 3` 344c824734SHaiyue Wangdo 354c824734SHaiyue Wang if grep -q "\.text.*[[:space:]]$SYM$" $DUMPFILE && 3605a38d7cSFerruh Yigit ! grep -q "\.text\.experimental.*[[:space:]]$SYM$" $DUMPFILE && 3705a38d7cSFerruh Yigit $LIST_SYMBOL -s $SYM $MAPFILE | grep -q EXPERIMENTAL 384c824734SHaiyue Wang then 394c824734SHaiyue Wang cat >&2 <<- END_OF_MESSAGE 404c824734SHaiyue Wang $SYM is not flagged as experimental 414c824734SHaiyue Wang but is listed in version map 424c824734SHaiyue Wang Please add __rte_experimental to the definition of $SYM 434c824734SHaiyue Wang END_OF_MESSAGE 444c824734SHaiyue Wang ret=1 454c824734SHaiyue Wang fi 464c824734SHaiyue Wangdone 474c824734SHaiyue Wang 484c824734SHaiyue Wang# Filter out symbols suffixed with a . for icc 494c824734SHaiyue Wangfor SYM in `awk '{ 504c824734SHaiyue Wang if ($2 != "l" && $4 == ".text.experimental" && !($NF ~ /\.$/)) { 514c824734SHaiyue Wang print $NF 524c824734SHaiyue Wang } 534c824734SHaiyue Wang}' $DUMPFILE` 544c824734SHaiyue Wangdo 554c824734SHaiyue Wang $LIST_SYMBOL -S EXPERIMENTAL -s $SYM -q $MAPFILE || { 564c824734SHaiyue Wang cat >&2 <<- END_OF_MESSAGE 574c824734SHaiyue Wang $SYM is flagged as experimental 584c824734SHaiyue Wang but is not listed in version map 594c824734SHaiyue Wang Please add $SYM to the version map 604c824734SHaiyue Wang END_OF_MESSAGE 614c824734SHaiyue Wang ret=1 624c824734SHaiyue Wang } 634c824734SHaiyue Wangdone 644c824734SHaiyue Wang 654c824734SHaiyue Wangfor SYM in `$LIST_SYMBOL -S INTERNAL $MAPFILE |cut -d ' ' -f 3` 664c824734SHaiyue Wangdo 674c824734SHaiyue Wang if grep -q "\.text.*[[:space:]]$SYM$" $DUMPFILE && 684c824734SHaiyue Wang ! grep -q "\.text\.internal.*[[:space:]]$SYM$" $DUMPFILE 694c824734SHaiyue Wang then 704c824734SHaiyue Wang cat >&2 <<- END_OF_MESSAGE 714c824734SHaiyue Wang $SYM is not flagged as internal 724c824734SHaiyue Wang but is listed in version map 734c824734SHaiyue Wang Please add __rte_internal to the definition of $SYM 744c824734SHaiyue Wang END_OF_MESSAGE 754c824734SHaiyue Wang ret=1 764c824734SHaiyue Wang fi 774c824734SHaiyue Wangdone 784c824734SHaiyue Wang 794c824734SHaiyue Wang# Filter out symbols suffixed with a . for icc 804c824734SHaiyue Wangfor SYM in `awk '{ 814c824734SHaiyue Wang if ($2 != "l" && $4 == ".text.internal" && !($NF ~ /\.$/)) { 824c824734SHaiyue Wang print $NF 834c824734SHaiyue Wang } 844c824734SHaiyue Wang}' $DUMPFILE` 854c824734SHaiyue Wangdo 864c824734SHaiyue Wang $LIST_SYMBOL -S INTERNAL -s $SYM -q $MAPFILE || { 874c824734SHaiyue Wang cat >&2 <<- END_OF_MESSAGE 884c824734SHaiyue Wang $SYM is flagged as internal 894c824734SHaiyue Wang but is not listed in version map 904c824734SHaiyue Wang Please add $SYM to the version map 914c824734SHaiyue Wang END_OF_MESSAGE 924c824734SHaiyue Wang ret=1 934c824734SHaiyue Wang } 944c824734SHaiyue Wangdone 954c824734SHaiyue Wang 964c824734SHaiyue Wangexit $ret 97