On Thu, Apr 3, 2025 at 6:59 PM David Marchand <david.march...@redhat.com> wrote: > > So far, each DPDK library (or driver) exposing symbols in an ABI had to > maintain a version.map and use some macros for symbol versioning, > specially crafted with the GNU linker in mind. > > This series proposes to rework the whole principle, and instead rely on > marking the symbol exports in the source code itself, then let it to the > build framework to produce a version script adapted to the linker in use > (think GNU linker vs MSVC linker). > > This greatly simplifies versioning symbols: a developer does not need to > know anything about version.map, or that a versioned symbol must be > renamed with _v26, annotated with __vsym, exported in a header etc... > > Checking symbol maps becomes unnecessary since generated by the build > framework. > > Updating to a new ABI is just a matter of bumping the value in > ABI_VERSION. > > > > -- > David Marchand > > Changes since v6: > - used argparse in python scripts, > - renamed eal_symbol_exports.h as eal_export.h, > - renamed some base symbols export files, > > Changes since v5: > - fixed Windows symbol exports for net/mlx5, > > Changes since RFC v4: > - rebased on main, now that Bruce series is merged, > - the export macros header has been moved to lib/eal/common/ > and its inclusion is now mandatory (rather than an implicit -include), > - reordered patches: symbol versioning is touched last and merged > in the export header (replacing the legacy rte_function_versioning.h), > > Changes since RFC v3: > - fixed/simplified documentation, > - rebased on top of Bruce series for common handling of AVX sources, > > Changes since RFC v2: > - updated RTE_VERSION_SYMBOL() (and friends) so that only the fonction > signature is enclosed in the macro, > - dropped invalid exports for some dead symbols or inline helpers, > - updated documentation and tooling, > - converted the whole tree (via a local script of mine), > > David Marchand (8): > lib: remove incorrect exported symbols > drivers: remove incorrect exported symbols > buildtools: display symbols version from map > build: generate symbol maps > build: mark exported symbols > build: use dynamically generated version maps > build: remove static version maps > eal: rework function versioning macros
Series applied. Heads up to subtree maintainers. TL;DR: please rebase your trees. If you had changes on version.map in your trees, you'll need to convert the new symbols and use RTE_EXPORT_SYMBOL* macros. If you have some doubt, ping me and I'll help. -- David Marchand