From f8ad40dc998cfaa5b08d97d813570ec6373dabcc Mon Sep 17 00:00:00 2001 From: Thomas Monjalon Date: Sun, 27 May 2018 23:54:47 +0200 Subject: [PATCH] devtools: check orphan symbols in map files The script check-symbol-maps.sh finds the symbols exported in a map file but not referenced in the codebase. Suggested-by: Pavan Nikhilesh Signed-off-by: Thomas Monjalon --- MAINTAINERS | 1 + devtools/check-symbol-maps.sh | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100755 devtools/check-symbol-maps.sh diff --git a/MAINTAINERS b/MAINTAINERS index 4d015fe533..7398749d72 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -81,6 +81,7 @@ F: devtools/check-dup-includes.sh F: devtools/check-maintainers.sh F: devtools/check-git-log.sh F: devtools/check-includes.sh +F: devtools/check-symbol-maps.sh F: devtools/checkpatches.sh F: devtools/get-maintainer.sh F: devtools/git-log-fixes.sh diff --git a/devtools/check-symbol-maps.sh b/devtools/check-symbol-maps.sh new file mode 100755 index 0000000000..e137d48a49 --- /dev/null +++ b/devtools/check-symbol-maps.sh @@ -0,0 +1,30 @@ +#! /bin/sh -e +# SPDX-License-Identifier: BSD-3-Clause +# Copyright 2018 Mellanox Technologies, Ltd + +cd $(dirname $0)/.. + +# speed up by ignoring Unicode details +export LC_ALL=C + +find_orphan_symbols () +{ + for map in $(find lib drivers -name '*.map') ; do + for sym in $(sed -rn 's,^([^}]*_.*);,\1,p' $map) ; do + if echo $sym | grep -q '^per_lcore_' ; then + continue + fi + if ! grep -q -r --exclude=$(basename $map) \ + -w $sym $(dirname $map) ; then + echo "$map: $sym" + fi + done + done +} + +orphan_symbols=$(find_orphan_symbols) +if [ -n "$orphan_symbols" ] ; then + echo "Found only in symbol map file:" + echo "$orphan_symbols" | sed 's,^,\t,' + exit 1 +fi -- 2.20.1