From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Monjalon Subject: [PATCH v2] devtools: check orphan symbols in map files Date: Sun, 27 May 2018 23:54:47 +0200 Message-ID: <20180527215447.2841-1-thomas@monjalon.net> References: <4156041.IfarTdeXU8@xps> Cc: Pavan Nikhilesh , Ferruh Yigit To: dev@dpdk.org Return-path: Received: from out1-smtp.messagingengine.com (out1-smtp.messagingengine.com [66.111.4.25]) by dpdk.org (Postfix) with ESMTP id E1990322C for ; Sun, 27 May 2018 23:54:54 +0200 (CEST) In-Reply-To: <4156041.IfarTdeXU8@xps> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 --- v2: - rewrite Python script from Pavan in a smaller shell script - check symbol as whole word (-w) - print one symbol per line --- 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 e56c72687..437777a22 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 000000000..e137d48a4 --- /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.16.2