dpdk/devtools/check-symbol-maps.sh
<<
>>
Prefs
   1#! /bin/sh -e
   2# SPDX-License-Identifier: BSD-3-Clause
   3# Copyright 2018 Mellanox Technologies, Ltd
   4
   5cd $(dirname $0)/..
   6
   7# speed up by ignoring Unicode details
   8export LC_ALL=C
   9
  10if [ $# = 0 ] ; then
  11    set -- $(find lib drivers -name '*.map')
  12fi
  13
  14ret=0
  15
  16find_orphan_symbols ()
  17{
  18    for map in $@ ; do
  19        for sym in $(sed -rn 's,^([^}]*_.*);.*$,\1,p' $map) ; do
  20            if echo $sym | grep -q '^per_lcore_' ; then
  21                symsrc=${sym#per_lcore_}
  22            elif echo $sym | grep -q '^__rte_.*_trace_' ; then
  23                symsrc=${sym#__}
  24            else
  25                symsrc=$sym
  26            fi
  27            if [ -z "$(grep -rlw $symsrc $(dirname $map) | grep -v $map)" ] ; then
  28                echo "$map: $sym"
  29            fi
  30        done
  31    done
  32}
  33
  34orphan_symbols=$(find_orphan_symbols $@)
  35if [ -n "$orphan_symbols" ] ; then
  36    echo "Found only in symbol map file:"
  37    echo "$orphan_symbols" | sed 's,^,\t,'
  38    ret=1
  39fi
  40
  41find_duplicate_symbols ()
  42{
  43    for map in $@ ; do
  44        buildtools/map-list-symbol.sh $map | \
  45            sort | uniq -c | grep -v " 1 $map" || true
  46    done
  47}
  48
  49duplicate_symbols=$(find_duplicate_symbols $@)
  50if [ -n "$duplicate_symbols" ] ; then
  51    echo "Found duplicates in symbol map file:"
  52    echo "$duplicate_symbols"
  53    ret=1
  54fi
  55
  56exit $ret
  57