2be668709c
INTERNAL is a newly introduced version, update the shell script that checks whether built libraries are versioned with expected ABI (current ABI, current ABI + 1, EXPERIMENTAL, or INTERNAL). Signed-off-by: Haiyue Wang <haiyue.wang@intel.com> Acked-by: David Marchand <david.marchand@redhat.com>
55 lines
1.5 KiB
Bash
Executable File
55 lines
1.5 KiB
Bash
Executable File
#!/bin/sh
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
# Copyright(c) 2019 Intel Corporation
|
|
|
|
# Check whether library symbols have correct
|
|
# version (provided ABI number or provided ABI
|
|
# number + 1 or EXPERIMENTAL or INTERNAL).
|
|
# Args:
|
|
# $1: path of the library .so file
|
|
# $2: ABI major version number to check
|
|
# (defaults to ABI_VERSION file value)
|
|
|
|
if [ -z "$1" ]; then
|
|
echo "Script checks whether library symbols have"
|
|
echo "correct version (ABI_VER/ABI_VER+1/EXPERIMENTAL/INTERNAL)"
|
|
echo "Usage:"
|
|
echo " $0 SO_FILE_PATH [ABI_VER]"
|
|
exit 1
|
|
fi
|
|
|
|
LIB="$1"
|
|
DEFAULT_ABI=$(cat "$(dirname \
|
|
$(readlink -f $0))/../ABI_VERSION" | \
|
|
cut -d'.' -f 1)
|
|
ABIVER="DPDK_${2-$DEFAULT_ABI}"
|
|
NEXT_ABIVER="DPDK_$((${2-$DEFAULT_ABI}+1))"
|
|
|
|
ret=0
|
|
|
|
# get output of objdump
|
|
OBJ_DUMP_OUTPUT=`objdump -TC --section=.text ${LIB} 2>&1 | grep ".text"`
|
|
|
|
# there may not be any .text sections in the .so file, in which case exit early
|
|
echo "${OBJ_DUMP_OUTPUT}" | grep "not found in any input file" -q
|
|
if [ "$?" -eq 0 ]; then
|
|
exit 0
|
|
fi
|
|
|
|
# we have symbols, so let's see if the versions are correct
|
|
for SYM in $(echo "${OBJ_DUMP_OUTPUT}" | awk '{print $(NF-1) "-" $NF}')
|
|
do
|
|
version=$(echo $SYM | cut -d'-' -f 1)
|
|
symbol=$(echo $SYM | cut -d'-' -f 2)
|
|
case $version in (*"$ABIVER"*|*"$NEXT_ABIVER"*|"EXPERIMENTAL"|"INTERNAL")
|
|
;;
|
|
(*)
|
|
echo "Warning: symbol $symbol ($version) should be annotated " \
|
|
"as ABI version $ABIVER / $NEXT_ABIVER, EXPERIMENTAL, or INTERNAL."
|
|
ret=1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
exit $ret
|