DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Gajdzica, MaciejX T" <maciejx.t.gajdzica@intel.com>
To: Neil Horman <nhorman@tuxdriver.com>, "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCHv3 2/3] rte_compat: Add MAP_STATIC_SYMBOL macro
Date: Fri, 26 Jun 2015 10:13:15 +0000	[thread overview]
Message-ID: <9CC680510C0AC140A846FED2EF7F9628138487D9@IRSMSX102.ger.corp.intel.com> (raw)
In-Reply-To: <1435242949-31520-2-git-send-email-nhorman@tuxdriver.com>



> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Neil Horman
> Sent: Thursday, June 25, 2015 4:36 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCHv3 2/3] rte_compat: Add MAP_STATIC_SYMBOL
> macro
> 
> It was pointed out in my examples that doing shared library symbol versioning by
> partitioning symbols to version specific functions (as opposed to leaving the
> latest symol version at the base symbol name), neglects to take into account
> static builds.  Add a macro to handle that.  If you choose a versioning approach
> that uniquely names every version of the symbol, then this macro lets you map
> your symbol choice to the base name when building a static library
> 
> Also, while I'm at it, since we're documenting this in the guide, take the
> abbreviated example out of the header
> 
> Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
> CC: thomas.monjalon@6wind.com

Acked-by: Maciej Gajdzica <maciejx.t.gajdzica@intel.com>

> ---
>  lib/librte_compat/rte_compat.h | 35 ++++++++++++++++++-----------------
>  1 file changed, 18 insertions(+), 17 deletions(-)
> 
> diff --git a/lib/librte_compat/rte_compat.h b/lib/librte_compat/rte_compat.h
> index 75920a1..d7768d5 100644
> --- a/lib/librte_compat/rte_compat.h
> +++ b/lib/librte_compat/rte_compat.h
> @@ -49,22 +49,8 @@
>   * Assumptions: DPDK 2.(X) contains a function int foo(char *string)
>   *              DPDK 2.(X+1) needs to change foo to be int foo(int index)
>   *
> - * To accomplish this:
> - * 1) Edit lib/<library>/library_version.map to add a DPDK_2.(X+1) node, in
> which
> - * foo is exported as a global symbol.
> - *
> - * 2) rename the existing function int foo(char *string) to
> - *	int foo_v20(char *string)
> - *
> - * 3) Add this macro immediately below the function
> - *	VERSION_SYMBOL(foo, _v20, 2.0);
> - *
> - * 4) Implement a new version of foo.
> - *	char foo(int value, int otherval) { ...}
> - *
> - * 5) Mark the newest version as the default version
> - *	BIND_DEFAULT_SYMBOL(foo, _v21, 2.1);
> - *
> + * Refer to the guidelines document in the docs subdirectory for
> + details on the
> + * use of these macros
>   */
> 
>  /*
> @@ -72,6 +58,8 @@
>   * b - function base name
>   * e - function version extension, to be concatenated with base name
>   * n - function symbol version string to be applied
> + * f - function prototype
> + * p - full function symbol name
>   */
> 
>  /*
> @@ -96,6 +84,19 @@
>  #define BIND_DEFAULT_SYMBOL(b, e, n) __asm__(".symver " RTE_STR(b)
> RTE_STR(e) ", " RTE_STR(b) "@@DPDK_" RTE_STR(n))  #define __vsym
> __attribute__((used))
> 
> +/*
> + * 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@DPDK_1 and the latter is mapped to
> +foo@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))))
>  /*
>   * RTE_BUILD_SHARED_LIB=n
>   */
> --
> 2.1.0

  reply	other threads:[~2015-06-26 10:13 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-23 19:33 [dpdk-dev] [PATCH 1/2] rte_compat.h : Clean up some typos Neil Horman
2015-06-23 19:33 ` [dpdk-dev] [PATCH 2/2] ABI: Add some documentation Neil Horman
2015-06-24 11:21   ` Mcnamara, John
2015-06-24 11:23 ` [dpdk-dev] [PATCH 1/2] rte_compat.h : Clean up some typos Mcnamara, John
2015-06-24 18:06   ` Neil Horman
2015-06-24 18:34 ` [dpdk-dev] [PATCHv2 " Neil Horman
2015-06-24 18:34   ` [dpdk-dev] [PATCHv2 2/2] ABI: Add some documentation Neil Horman
2015-06-24 21:09     ` Thomas Monjalon
2015-06-25 11:35       ` Neil Horman
2015-06-25 13:22         ` Thomas Monjalon
2015-06-25  7:19     ` Zhang, Helin
2015-06-25  7:42       ` Gonzalez Monroy, Sergio
2015-06-25  8:00         ` Gonzalez Monroy, Sergio
2015-06-25 12:25       ` Neil Horman
2015-06-29 16:35         ` [dpdk-dev] [PATCH] lib: remove redundant definition of local symbols Thomas Monjalon
2015-06-30 15:50           ` Thomas Monjalon
2015-06-24 19:41   ` [dpdk-dev] [PATCHv2 1/2] rte_compat.h : Clean up some typos Thomas Monjalon
2015-06-24 20:15     ` Neil Horman
2015-06-24 20:49       ` Thomas Monjalon
2015-06-25  7:37 ` [dpdk-dev] [PATCH " Gajdzica, MaciejX T
2015-06-25 12:28   ` Neil Horman
2015-06-25 14:35 ` [dpdk-dev] [PATCHv3 1/3] " Neil Horman
2015-06-25 14:35   ` [dpdk-dev] [PATCHv3 2/3] rte_compat: Add MAP_STATIC_SYMBOL macro Neil Horman
2015-06-26 10:13     ` Gajdzica, MaciejX T [this message]
2015-06-26 12:52     ` Thomas Monjalon
2015-06-26 14:30       ` Neil Horman
2015-06-28 20:13         ` Thomas Monjalon
2015-06-29 13:44           ` Neil Horman
2015-06-25 14:35   ` [dpdk-dev] [PATCHv3 3/3] ABI: Add some documentation Neil Horman
2015-06-26 13:00     ` Thomas Monjalon
2015-06-26 14:54       ` Neil Horman
2015-06-28 20:24         ` Thomas Monjalon
2015-06-29 13:53           ` Neil Horman
2015-06-26 12:45   ` [dpdk-dev] [PATCHv3 1/3] rte_compat.h : Clean up some typos Thomas Monjalon
2015-06-29 13:59 ` [dpdk-dev] [PATCHv4 1/4] " Neil Horman
2015-06-29 13:59   ` [dpdk-dev] [PATCHv4 2/4] rte_compat: Add MAP_STATIC_SYMBOL macro Neil Horman
2015-06-29 13:59   ` [dpdk-dev] [PATCHv4 3/4] rte_compat: remove BASE_SYMBOL Neil Horman
2015-06-29 13:59   ` [dpdk-dev] [PATCHv4 4/4] ABI: Add some documentation Neil Horman
2015-06-29 15:07     ` Thomas Monjalon
2015-07-08  9:52   ` [dpdk-dev] [PATCHv4 1/4] rte_compat.h : Clean up some typos Thomas Monjalon
2015-07-08 11:04     ` Neil Horman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9CC680510C0AC140A846FED2EF7F9628138487D9@IRSMSX102.ger.corp.intel.com \
    --to=maciejx.t.gajdzica@intel.com \
    --cc=dev@dpdk.org \
    --cc=nhorman@tuxdriver.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).