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: sta...@dpdk.org Suggested-by: Thomas Monjalon <tho...@monjalon.net> Signed-off-by: Ali Alnubani <alia...@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