Hi, > -----Original Message----- > From: David Marchand <david.march...@redhat.com> > Sent: Wednesday, November 04, 2020 17:41 > To: dev@dpdk.org > Cc: Richardson, Bruce <bruce.richard...@intel.com>; > robin.ja...@6wind.com; step...@networkplumber.org; > olivier.m...@6wind.com; Neil Horman <nhor...@tuxdriver.com>; Xu, > Rosen <rosen...@intel.com>; Andrew Rybchenko > <andrew.rybche...@oktetlabs.ru>; Luca Boccassi <bl...@debian.org> > Subject: [PATCH v2] usertools: fix pmdinfo parsing > > This script inspects an ELF file (binary or shared library) and its linked > dependencies by following DT_NEEDED tags. > So far a simple librte_pmd prefix was used as a filter. > Now that we changed the driver library names, update this heuristic with an > explicit list of all driver classes. > > Fixes: a20b2c01a7a1 ("build: standardize component names and defines") > > Signed-off-by: David Marchand <david.march...@redhat.com> > Acked-by: Robin Jarry <robin.ja...@6wind.com> > --- > Changelog since v1: > - moved driver classes list as a class variable and did some cosmetic > change for readibility, > - used dpdk_driver_classes variable name in the hope that someone > changing > meson will catch this script too, > - added bus, common, mempool and raw driver classes as some of them do > carry some pmdinfo stuff and were skipped so far but I found no > indication this skipping was intended, > > --- > usertools/dpdk-pmdinfo.py | 20 +++++++++++++++++++- > 1 file changed, 19 insertions(+), 1 deletion(-) > > diff --git a/usertools/dpdk-pmdinfo.py b/usertools/dpdk-pmdinfo.py index > 1661982791..55a55affde 100755 > --- a/usertools/dpdk-pmdinfo.py > +++ b/usertools/dpdk-pmdinfo.py > @@ -430,6 +430,20 @@ def get_dt_runpath(self, dynsec): > return force_unicode(tag.runpath) > return "" > > + dpdk_driver_classes = ( > + 'baseband', > + 'bus', > + 'common', > + 'compress', > + 'crypto', > + 'event', > + 'mempool', > + 'net', > + 'raw', > + 'regex', > + 'vdpa', > + ) > + > def process_dt_needed_entries(self): > """ Look to see if there are any DT_NEEDED entries in the binary > And process those if there are @@ -450,7 +464,11 @@ def > process_dt_needed_entries(self): > for tag in dynsec.iter_tags(): > # pyelftools may return byte-strings, force decode them > if force_unicode(tag.entry.d_tag) == 'DT_NEEDED': > - if 'librte_pmd' in force_unicode(tag.needed): > + words = force_unicode(tag.needed).split('_') > + if len(words) < 3: > + continue > + prefix, drv_class = words[:2] > + if prefix == 'librte' and drv_class in > self.dpdk_driver_classes: > library = search_file(force_unicode(tag.needed), > runpath + ":" + ldlibpath + > ":/usr/lib64:/lib64:/usr/lib:/lib") > -- > 2.23.0
Acked-by: Rosen Xu <rosen...@intel.com>