2015-06-25 10:35, Neil Horman: > +/* > + * MAP_STATIC_SYMBOL > + * If a function has been bifurcated into multiple versions, none of which > + * are defined as the exported symbol name in the map file, this macro can be > + * used to alias a specific version of the symbol to its exported name. For > + * example, if you have 2 versions of a function foo_v1 and foo_v2, where the > + * former is mapped to foo at DPDK_1 and the latter is mapped to foo at > DPDK_2 when > + * building a shared library, this macro can be used to map either foo_v1 or > + * foo_v2 to the symbol foo when building a static library, e.g.: > + * MAP_STATIC_SYMBOL(void foo(), foo_v2); > + */ > +#define MAP_STATIC_SYMBOL(f, p) > + > #else > /* > * No symbol versioning in use > @@ -104,7 +105,7 @@ > #define __vsym > #define BASE_SYMBOL(b, n) > #define BIND_DEFAULT_SYMBOL(b, e, n) > - > +#define MAP_STATIC_SYMBOL(f, p) f __attribute__((alias( RTE_STR(p))))
Is it working with clang and icc? Why not just define foo as foo_v2? As this is the equivalent of BIND_DEFAULT_SYMBOL for the static case, it would be easier to mix them in only one macro.