From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id CAB7B45804 for ; Fri, 23 Aug 2024 18:22:40 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C56B04336F; Fri, 23 Aug 2024 18:22:40 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mails.dpdk.org (Postfix) with ESMTP id 32A5B402BE for ; Fri, 23 Aug 2024 18:22:39 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1724430158; 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=DqUZb5UaKOG24nAdruYQjI4yCot5Rqcm1soapLWvNjw=; b=VdywVWoXBu6Qch6B5YtdtlXYCxscRPJ2k9KFbDwwbsb0m9WpKQ012Ce0hHKzJQPoQ1myca Qk5DtzT+nkekMMFYj9hMlCu0bBOSqgNg+GFpwfx+qwQjO0Bw3zDGTz8essCnfJFOzSWPKK c9sWZWZD4VD+JsZ3WRzHHLS8zXzlWKA= Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-139-wUg_piJDNQyPcXHQ0RHNUw-1; Fri, 23 Aug 2024 12:22:33 -0400 X-MC-Unique: wUg_piJDNQyPcXHQ0RHNUw-1 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 5F95F195608A; Fri, 23 Aug 2024 16:22:32 +0000 (UTC) Received: from rh.redhat.com (unknown [10.39.193.224]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 72A391955F44; Fri, 23 Aug 2024 16:22:29 +0000 (UTC) From: Kevin Traynor To: David Marchand Cc: Ali Alnubani , Song Jiale , dpdk stable Subject: patch 'buildtools: fix build with clang 17 and ASan' has been queued to stable release 21.11.8 Date: Fri, 23 Aug 2024 17:18:30 +0100 Message-ID: <20240823161929.1004778-82-ktraynor@redhat.com> In-Reply-To: <20240823161929.1004778-1-ktraynor@redhat.com> References: <20240823161929.1004778-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Hi, FYI, your patch has been queued to stable release 21.11.8 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 08/28/24. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/kevintraynor/dpdk-stable This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable/commit/06b3d5f8ec659da3c03b7160d933f4172979ad1a Thanks. Kevin --- >From 06b3d5f8ec659da3c03b7160d933f4172979ad1a Mon Sep 17 00:00:00 2001 From: David Marchand Date: Thu, 11 Jul 2024 11:35:36 +0200 Subject: [PATCH] buildtools: fix build with clang 17 and ASan [ upstream commit e1d8a879abac499a66801bb8238d59ba52f4fc6b ] ASan included in clang 17 and later suffixes symbols. $ nm build/drivers/libtmp_rte_net_null.a | grep this_pmd 0000000000000000 r this_pmd_name3 0000000000000000 n this_pmd_name3.f2cd16678ab09dba8fd23405d8d11fce This breaks the detection of driver symbols in pmdinfogen which then creates duplicate symbols "_pmd_info" in many drivers. Such duplicate symbols trigger a link error. $ grep -w _pmd_info build/drivers/rte_net_*.pmd.c build/drivers/rte_net_af_packet.pmd.c:const char _pmd_info[] __attribute__((used)) = "PMD_INFO_STRING= {\"name\": \"\", \"pci_ids\": []}"; build/drivers/rte_net_null.pmd.c:const char _pmd_info[] __attribute__((used)) = "PMD_INFO_STRING= {\"name\": \"\", \"pci_ids\": []}"; A simple reproducer: $ CC=clang meson setup build -Denable_apps=test-pmd -Ddisable_libs=* \ -Denable_drivers=net/null,net/af_packet -Dtests=false \ -Db_lundef=false -Db_sanitize=address $ ninja -C build Before this patch, the pmdinfogen script was relying on a symbol name starting with this_pmd_name. On the other hand, what this script needs is symbols whose names are this_pmd_name ## __COUNTER__, see below an example for PCI driver symbols (the same applies to other buses). $ git grep -w RTE_PMD_EXPORT_NAME drivers/bus/pci/bus_pci_driver.h drivers/bus/pci/bus_pci_driver.h:RTE_PMD_EXPORT_NAME(nm, __COUNTER__) $ git grep -B1 this_pmd_name lib/eal/ lib/eal/include/rte_dev.h-#define RTE_PMD_EXPORT_NAME(name, idx) \ lib/eal/include/rte_dev.h:static const char RTE_PMD_EXPORT_NAME_ARRAY(this_pmd_name, idx) \ $ git grep define.RTE_PMD_EXPORT_NAME_ARRAY lib/eal/include/rte_dev.h lib/eal/include/rte_dev.h:#define RTE_PMD_EXPORT_NAME_ARRAY(n, idx) n##idx[] Adjust the symbol filter for both ELF and COFF implementations. Bugzilla ID: 1466 Reported-by: Ali Alnubani Reported-by: Song Jiale Signed-off-by: David Marchand Tested-by: Song Jiale --- buildtools/pmdinfogen.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/buildtools/pmdinfogen.py b/buildtools/pmdinfogen.py index 2a44f17bda..dfb89500c0 100755 --- a/buildtools/pmdinfogen.py +++ b/buildtools/pmdinfogen.py @@ -7,4 +7,5 @@ import argparse import ctypes import json +import re import sys import tempfile @@ -67,9 +68,9 @@ class ELFImage: return None - def find_by_prefix(self, prefix): - prefix = prefix.encode("utf-8") if self._legacy_elftools else prefix + def find_by_pattern(self, pattern): + pattern = pattern.encode("utf-8") if self._legacy_elftools else pattern for i in range(self._symtab.num_symbols()): symbol = self._symtab.get_symbol(i) - if symbol.name.startswith(prefix): + if re.match(pattern, symbol.name): yield ELFSymbol(self._image, symbol) @@ -98,7 +99,7 @@ class COFFImage: return False - def find_by_prefix(self, prefix): + def find_by_pattern(self, pattern): for symbol in self._image.symbols: - if symbol.name.startswith(prefix): + if re.match(pattern, symbol.name): yield COFFSymbol(self._image, symbol) @@ -200,5 +201,5 @@ class Driver: def load_drivers(image): drivers = [] - for symbol in image.find_by_prefix("this_pmd_name"): + for symbol in image.find_by_pattern("^this_pmd_name[0-9]+$"): drivers.append(Driver.load(image, symbol)) return drivers -- 2.46.0 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2024-08-23 17:18:12.174657607 +0100 +++ 0082-buildtools-fix-build-with-clang-17-and-ASan.patch 2024-08-23 17:18:09.757430235 +0100 @@ -1 +1 @@ -From e1d8a879abac499a66801bb8238d59ba52f4fc6b Mon Sep 17 00:00:00 2001 +From 06b3d5f8ec659da3c03b7160d933f4172979ad1a Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit e1d8a879abac499a66801bb8238d59ba52f4fc6b ] + @@ -49 +50,0 @@ -Cc: stable@dpdk.org