DPDK patches and discussions
 help / color / mirror / Atom feed
* [PATCH] buildtools: fix build with clang 17
@ 2024-03-20 15:58 Ali Alnubani
  2024-03-20 16:30 ` David Marchand
  0 siblings, 1 reply; 2+ messages in thread
From: Ali Alnubani @ 2024-03-20 15:58 UTC (permalink / raw)
  To: dev; +Cc: thomas, stable

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@dpdk.org

Suggested-by: Thomas Monjalon <thomas@monjalon.net>
Signed-off-by: Ali Alnubani <alialnu@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


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] buildtools: fix build with clang 17
  2024-03-20 15:58 [PATCH] buildtools: fix build with clang 17 Ali Alnubani
@ 2024-03-20 16:30 ` David Marchand
  0 siblings, 0 replies; 2+ messages in thread
From: David Marchand @ 2024-03-20 16:30 UTC (permalink / raw)
  To: Ali Alnubani; +Cc: dev, thomas, stable

Hello Ali, Thomas,

On Wed, Mar 20, 2024 at 5:01 PM Ali Alnubani <alialnu@nvidia.com> wrote:
>
> 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.

I suppose this comes from ASan instrumenting the code:
# nm /root/dpdk/build-clang/drivers/libtmp_rte_common_mlx5.a | grep this_pmd
0000000000000000 r this_pmd_name3
0000000000000000 n this_pmd_name3.e5676185d74e2e1a9de646deebca963f
0000000000000000 r this_pmd_name3
0000000000000000 n this_pmd_name3.a2533baf7a46959f41383725087d4086

The name of the symbols this script should look for has a clear
format, which is this_pmd_name[0-9]+.
Filtering with this pattern, there would be no need to go and
interpret a symbol content.


-- 
David Marchand


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-03-20 16:30 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-03-20 15:58 [PATCH] buildtools: fix build with clang 17 Ali Alnubani
2024-03-20 16:30 ` David Marchand

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).