add ABI checks
[dpdk.git] / devtools / check-abi-dump.sh
1 #!/bin/sh -e
2 # SPDX-License-Identifier: BSD-3-Clause
3 # Copyright (c) 2019 Red Hat, Inc.
4
5 if [ $# != 2 ] && [ $# != 3 ]; then
6         echo "Usage: $0 builddir dumpdir [warnonly]"
7         exit 1
8 fi
9
10 builddir=$1
11 dumpdir=$2
12 warnonly=${3:-}
13 if [ ! -d $builddir ]; then
14         echo "Error: build directory '$builddir' does not exist."
15         exit 1
16 fi
17 if [ ! -d $dumpdir ]; then
18         echo "Error: dump directory '$dumpdir' does not exist."
19         exit 1
20 fi
21
22 ABIDIFF_OPTIONS="--suppr $(dirname $0)/dpdk.abignore"
23 error=
24 for dump in $(find $dumpdir -name "*.dump"); do
25         libname=$(basename $dump)
26         libname=${libname%.dump}
27         result=
28         for f in $(find $builddir -name "$libname.so.*"); do
29                 if test -L $f || [ "$f" != "${f%%.symbols}" ]; then
30                         continue
31                 fi
32                 result=found
33
34                 if ! abidiff $ABIDIFF_OPTIONS $dump $f; then
35                         echo "Error: ABI issue reported for $dump, $f"
36                         error=1
37                 fi
38                 break
39         done
40         if [ "$result" != "found" ]; then
41                 echo "Error: can't find a library for dump file $dump"
42                 error=1
43         fi
44 done
45
46 [ -z "$error" ] || [ -n "$warnonly" ]