[PATCH] buildtools: fix build with clang 17

Ali Alnubani alialnu at nvidia.com
Wed Mar 20 16:58:14 CET 2024


On Fedora 39 with Clang 17.0.3 and ASan enabled,
RTE_PMD_EXPORT_NAME seems to be done twice for a single
lib, which results in load_drivers() returning a list
consisting of 2 drivers (e.g., ['mlx5_common_pci', '']).
image.find_by_prefix("this_pmd_name") returns 2 symbols in this case,
"mlx5_common_pci" and an empty string ''. This didn't reproduce
with clang version 16.0.6.

This patch ensures that a symbol with an empty string_value doesn't
cause an addition to the list of drivers.

Bugzilla ID: 1313

Cc: stable at dpdk.org

Suggested-by: Thomas Monjalon <thomas at monjalon.net>
Signed-off-by: Ali Alnubani <alialnu at nvidia.com>
---
 buildtools/pmdinfogen.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/buildtools/pmdinfogen.py b/buildtools/pmdinfogen.py
index 2a44f17bda..2b29872649 100755
--- a/buildtools/pmdinfogen.py
+++ b/buildtools/pmdinfogen.py
@@ -71,7 +71,9 @@ def find_by_prefix(self, prefix):
         for i in range(self._symtab.num_symbols()):
             symbol = self._symtab.get_symbol(i)
             if symbol.name.startswith(prefix):
-                yield ELFSymbol(self._image, symbol)
+                elf_symbol = ELFSymbol(self._image, symbol)
+                if elf_symbol.string_value:
+                    yield elf_symbol
 
 
 class COFFSymbol:
-- 
2.25.1



More information about the stable mailing list