> -----Original Message----- > From: Thomas Monjalon <tho...@monjalon.net> > Sent: Tuesday, April 21, 2020 16:48 > To: David Marchand <david.march...@redhat.com>; Wang, Haiyue > <haiyue.w...@intel.com> > Cc: Neil Horman <nhor...@tuxdriver.com>; dev <dev@dpdk.org>; Burakov, Anatoly > <anatoly.bura...@intel.com>; Vamsi Attunuru <vattun...@marvell.com>; Jerin > Jacob Kollanukkaran > <jer...@marvell.com>; Yigit, Ferruh <ferruh.yi...@intel.com>; Richardson, > Bruce > <bruce.richard...@intel.com>; Kinsella, Ray <ray.kinse...@intel.com> > Subject: Re: [PATCH v8 0/2] support for VFIO-PCI VF token interface > > 21/04/2020 04:52, Wang, Haiyue: > > From: Thomas Monjalon <tho...@monjalon.net> > > > 21/04/2020 03:38, Wang, Haiyue: > > > > From: Thomas Monjalon <tho...@monjalon.net> > > > > > 20/04/2020 19:37, Wang, Haiyue: > > > > > > From: Thomas Monjalon <tho...@monjalon.net> > > > > > > > 20/04/2020 19:02, Wang, Haiyue: > > > > > > > > From: David Marchand <david.march...@redhat.com> > > > > > > > > > I had a look at the CI, I can see we are still missing bits > > > > > > > > > to handle > > > > > > > > > the ABI failure on rte_vfio_setup_device. > > > > > > > > > > > > > > > > Yes, not handle it now. > > > > > > > > > > > > > > > > If 'rte_vfio_setup_device' can be internal, not official DPDK > > > > > > > > API, then __rte_internal > > > > > > > > is the best way to handle ABI issue. > > > > > > > > > > > > > > Please could you help finishing integration of __rte_internal? > > > > > > > > > > > > I thought it should be Neil ? "Yes, I'll get back to this today" ;-) > > > > > > > http://inbox.dpdk.org/dev/cajfav8ydlkv0afehqbh6kea3box0yxb3n0mngtmd4s9bmsg...@mail.gmail.com/ > > > > > > > > > > It did not happen after several months. > > > > > If you want to unblock your patches, I think it is safer to finish > > > > > yourself. > > > > > > > > > > > > > Unfortunately, this __rte_internal will still make the ci fail to run > > > > when move the function > > > > to INTERNAL session: > > > [...] > > > > +INTERNAL { > > > > + global: > > > > + > > > > + # added in 20.05 > > > > + rte_vfio_setup_device; > > > > +}; > > > > > > Why do you need to move the symbol explicitly in .map? > > > The tool should ignore symbols moving to internal, as an exception until > > > 20.11. > > > > If not move the symbol explicitly in .map, another kind of error happened. > > > > ./devtools/check-abi.sh old_abi new_abi > > Functions changes summary: 0 Removed, 1 Changed, 0 Added function > > Variables changes summary: 0 Removed, 0 Changed, 0 Added variable > > > > 1 function with some indirect sub-type change: > > > > [C] 'function int rte_vfio_setup_device(const char*, const char*, int*, > > vfio_device_info*)' at > eal_vfio.c:704:1 has some indirect sub-type changes: > > parameter 5 of type 'unsigned char*' was added > > > > Error: ABI issue reported for 'abidiff --suppr > > ./devtools/libabigail.abignore --no-added-syms -- > headers-dir1 old_abi/include --headers-dir2 new_abi/include > old_abi/dump/librte_eal.dump > new_abi/dump/librte_eal.dump' > > This is what I said: you need to add a rule to ignore internal symbols. >
Got the kind reply from Dodji, the maintainer of libabigail, his suggestion meets what we have done for 'EXPERIMENTAL'. So it seems that have to mark all needed functions as INTERNAL firstly, which obviously will break the CI as the public functions are removed.... " __PROJECT_INTERNAL_USE_ONLY_VERSION__ { global: funA }; ... Then, once you have all your internal functions marked in the ELF binary with the proper ELF version string, you can tell libabigail to suppress all functions that have that version by writing a suppression specification file that has this content: [suppress_function] symbol_version = __PROJECT_INTERNAL_USE_ONLY_VERSION__ "