On 5/14/2020 4:32 PM, David Marchand wrote: > On Thu, May 14, 2020 at 1:52 PM Ferruh Yigit <ferruh.yi...@intel.com> wrote: >> >> On v20.02 some meter APIs have been matured and symbols moved from >> EXPERIMENTAL to DPDK_20.0.1 block. >> >> This can break the applications that were using these mentioned APIs on >> v19.11. Although there is no modification on the APIs and the action is >> positive and matures the APIs, the affect can be negative to >> applications. >> >> Since experimental APIs can change or go away without notice as part of >> contract, to prevent this negative affect that may occur by maturing >> experimental API, a process update already suggested, which enables >> aliasing without forcing it: >> https://patches.dpdk.org/patch/65863/ >> >> This patch provides aliasing by duplicating the existing and versioned >> symbols as experimental. >> >> Since symbols moved from DPDK_20.0.1 to DPDK_21 block in the v20.05, the >> aliasing done between EXPERIMENTAL and DPDK_21. >> >> Also following changes done to enabling aliasing: >> >> Created VERSION_SYMBOL_EXPERIMENTAL helper macro. > > This helper (+ script update) must come with the process update: the > macro is referenced in its v5 revision.
The macro is implementation detail, and this patch does the implementation. There is a dependency to process update patch, but that doesn't need to define how the macro should be. Let me send a new version with below updates, we can discuss this more if required. > > >> >> Updated the 'check-experimental-syms.sh' buildtool, which was > > Nit: the script name changed. > > >> diff --git a/lib/librte_eal/include/rte_function_versioning.h >> b/lib/librte_eal/include/rte_function_versioning.h >> index b9f862d295..534a8bff95 100644 >> --- a/lib/librte_eal/include/rte_function_versioning.h >> +++ b/lib/librte_eal/include/rte_function_versioning.h >> @@ -46,6 +46,15 @@ >> */ >> #define VERSION_SYMBOL(b, e, n) __asm__(".symver " RTE_STR(b) RTE_STR(e) ", >> " RTE_STR(b) "@DPDK_" RTE_STR(n)) >> >> + > > No need for this newline. > >> +/* >> + * VERSION_SYMBOL_EXPERIMENTAL >> + * Creates a symbol version table entry binding the symbol <b>@EXPERIMENTAL >> to the internal >> + * function name <b><e>. The macro is used when a symbol matures to become >> part of the stable ABI, >> + * to provide an alias to experimental for some time. >> + */ >> +#define VERSION_SYMBOL_EXPERIMENTAL(b, e) __asm__(".symver " RTE_STR(b) >> RTE_STR(e) ", " RTE_STR(b) "@EXPERIMENTAL") >> + >> /* >> * BIND_DEFAULT_SYMBOL >> * Creates a symbol version entry instructing the linker to bind references >> to > >