From patchwork Wed May 5 14:30:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Marchand X-Patchwork-Id: 92936 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id BA73CA0A02; Wed, 5 May 2021 16:30:19 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A3EE74111E; Wed, 5 May 2021 16:30:19 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mails.dpdk.org (Postfix) with ESMTP id 8A5644111D for ; Wed, 5 May 2021 16:30:18 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1620225018; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=toos1+yPk+05UG/3zsAvLnZUrMvU7CXLN4+NGDUpT60=; b=ALHv+0mvtYTMRh/pGzqHVsegu+L/BUTAJ4KdsUf0Zto6hnlwducQHh8Yzi4c5+yobjIiSh QgrArvfcJsAW7rhfe/66DNFEpdUtWdaWVttj17PeYwx7hyTFtyo5/zeC+URvTHw5K2wnna JTxULQLs4ju8GRoAERnxcLsBdqNfz70= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-360-1QUb-_hZPCugzQduyYGbqw-1; Wed, 05 May 2021 10:30:16 -0400 X-MC-Unique: 1QUb-_hZPCugzQduyYGbqw-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 9A08D195D565; Wed, 5 May 2021 14:30:14 +0000 (UTC) Received: from dmarchan.remote.csb (unknown [10.40.192.147]) by smtp.corp.redhat.com (Postfix) with ESMTP id ECB465DAA5; Wed, 5 May 2021 14:30:11 +0000 (UTC) From: David Marchand To: dev@dpdk.org Cc: thomas@monjalon.net, ferruh.yigit@intel.com, bruce.richardson@intel.com, Ray Kinsella , Neil Horman Date: Wed, 5 May 2021 16:30:01 +0200 Message-Id: <20210505143001.14178-2-david.marchand@redhat.com> In-Reply-To: <20210505143001.14178-1-david.marchand@redhat.com> References: <20210225111457.32540-1-david.marchand@redhat.com> <20210505143001.14178-1-david.marchand@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=david.marchand@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Subject: [dpdk-dev] [PATCH v2 2/2] buildtools: check symbol maps in developer mode X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Hook check-symbol-maps.sh in the symbol check when in developer mode to help developers catch issues before submitting their changes. Signed-off-by: David Marchand Reviewed-by: Ray Kinsella --- Changes since v1: - now that we have the developer mode, added this check in the build process, --- buildtools/check-symbols.sh | 9 ++++++++- devtools/check-symbol-maps.sh | 12 ++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/buildtools/check-symbols.sh b/buildtools/check-symbols.sh index 83b3a0182f..e458c0af72 100755 --- a/buildtools/check-symbols.sh +++ b/buildtools/check-symbols.sh @@ -5,7 +5,9 @@ MAPFILE=$1 OBJFILE=$2 -LIST_SYMBOL=$(dirname $(readlink -f $0))/map-list-symbol.sh +ROOTDIR=$(readlink -f $(dirname $(readlink -f $0))/..) +LIST_SYMBOL=$ROOTDIR/buildtools/map-list-symbol.sh +CHECK_SYMBOL_MAPS=$ROOTDIR/devtools/check-symbol-maps.sh # added check for "make -C test/" usage if [ ! -e $MAPFILE ] || [ ! -f $OBJFILE ] @@ -23,6 +25,11 @@ trap 'rm -f "$DUMPFILE"' EXIT objdump -t $OBJFILE >$DUMPFILE ret=0 + +if ! $CHECK_SYMBOL_MAPS $MAPFILE; then + ret=1 +fi + for SYM in `$LIST_SYMBOL -S EXPERIMENTAL $MAPFILE |cut -d ' ' -f 3` do if grep -q "\.text.*[[:space:]]$SYM$" $DUMPFILE && diff --git a/devtools/check-symbol-maps.sh b/devtools/check-symbol-maps.sh index f2c7d29663..c52e28bd69 100755 --- a/devtools/check-symbol-maps.sh +++ b/devtools/check-symbol-maps.sh @@ -7,11 +7,15 @@ cd $(dirname $0)/.. # speed up by ignoring Unicode details export LC_ALL=C +if [ $# = 0 ] ; then + set -- $(find lib drivers -name '*.map') +fi + ret=0 find_orphan_symbols () { - for map in $(find lib drivers -name '*.map') ; do + for map in $@ ; do for sym in $(sed -rn 's,^([^}]*_.*);.*$,\1,p' $map) ; do if echo $sym | grep -q '^per_lcore_' ; then symsrc=${sym#per_lcore_} @@ -28,7 +32,7 @@ find_orphan_symbols () done } -orphan_symbols=$(find_orphan_symbols) +orphan_symbols=$(find_orphan_symbols $@) if [ -n "$orphan_symbols" ] ; then echo "Found only in symbol map file:" echo "$orphan_symbols" | sed 's,^,\t,' @@ -37,13 +41,13 @@ fi find_duplicate_symbols () { - for map in $(find lib drivers -name '*.map') ; do + for map in $@ ; do buildtools/map-list-symbol.sh $map | \ sort | uniq -c | grep -v " 1 $map" || true done } -duplicate_symbols=$(find_duplicate_symbols) +duplicate_symbols=$(find_duplicate_symbols $@) if [ -n "$duplicate_symbols" ] ; then echo "Found duplicates in symbol map file:" echo "$duplicate_symbols"