From: Ferruh Yigit <ferruh.yigit@intel.com>
To: Neil Horman <nhorman@tuxdriver.com>,
Cristian Dumitrescu <cristian.dumitrescu@intel.com>,
Eelco Chaudron <echaudro@redhat.com>
Cc: dev@dpdk.org, Thomas Monjalon <thomas@monjalon.net>,
Luca Boccassi <bluca@debian.org>,
David Marchand <david.marchand@redhat.com>,
Bruce Richardson <bruce.richardson@intel.com>,
Ian Stokes <ian.stokes@intel.com>,
Andrzej Ostruszka <amo@semihalf.com>
Subject: [dpdk-dev] [RFC v2] meter: fix ABI break due to experimental tag removal
Date: Wed, 29 Jan 2020 16:43:50 +0000 [thread overview]
Message-ID: <20200129164350.3724793-1-ferruh.yigit@intel.com> (raw)
In-Reply-To: <20200129122953.2016199-1-ferruh.yigit@intel.com>
Duplicated the existing symbol and versioned one as experimental and
other as stable.
Created VERSION_SYMBOL_EXPERIMENTAL helper macro.
Updated the 'check-experimental-syms.sh' buildtool, which was
complaining that the symbol is in EXPERIMENTAL tag in .map file but it
is not in the .experimental section (__rte_experimental tag is missing).
Updated tool in a way it won't complain if the symbol in the
EXPERIMENTAL tag duplicated in some other block in .map file (versioned)
Enabled function versioning for meson build for the library.
Fixes: 30512af820fe ("meter: remove experimental flag from RFC4115 trTCM API")
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
Cc: Neil Horman <nhorman@tuxdriver.com>
Cc: Thomas Monjalon <thomas@monjalon.net>
Cc: Luca Boccassi <bluca@debian.org>
Cc: David Marchand <david.marchand@redhat.com>
Cc: Bruce Richardson <bruce.richardson@intel.com>
Cc: Ian Stokes <ian.stokes@intel.com>
Cc: Eelco Chaudron <echaudro@redhat.com>
Cc: Andrzej Ostruszka <amo@semihalf.com>
v2:
* allow versioning only for meter library, instead of enabling it
globally
I didn't like the idea of duplicating the symbol but not able to find to
alias it without duplicating, if there is a way please share.
Also not tested with old binaries, only verified the symbols in new
binaries.
---
buildtools/check-experimental-syms.sh | 3 +-
.../common/include/rte_function_versioning.h | 4 ++
lib/librte_meter/meson.build | 1 +
lib/librte_meter/rte_meter.c | 59 ++++++++++++++++++-
lib/librte_meter/rte_meter_version.map | 8 +++
5 files changed, 71 insertions(+), 4 deletions(-)
diff --git a/buildtools/check-experimental-syms.sh b/buildtools/check-experimental-syms.sh
index f3603e5ba..35c4bf006 100755
--- a/buildtools/check-experimental-syms.sh
+++ b/buildtools/check-experimental-syms.sh
@@ -26,7 +26,8 @@ ret=0
for SYM in `$LIST_SYMBOL -S EXPERIMENTAL $MAPFILE |cut -d ' ' -f 3`
do
if grep -q "\.text.*[[:space:]]$SYM$" $DUMPFILE &&
- ! grep -q "\.text\.experimental.*[[:space:]]$SYM$" $DUMPFILE
+ ! grep -q "\.text\.experimental.*[[:space:]]$SYM$" $DUMPFILE &&
+ $LIST_SYMBOL -s $SYM $MAPFILE | grep -q EXPERIMENTAL
then
cat >&2 <<- END_OF_MESSAGE
$SYM is not flagged as experimental
diff --git a/lib/librte_eal/common/include/rte_function_versioning.h b/lib/librte_eal/common/include/rte_function_versioning.h
index c924351d5..ab102b06e 100644
--- a/lib/librte_eal/common/include/rte_function_versioning.h
+++ b/lib/librte_eal/common/include/rte_function_versioning.h
@@ -46,6 +46,9 @@
*/
#define VERSION_SYMBOL(b, e, n) __asm__(".symver " RTE_STR(b) RTE_STR(e) ", " RTE_STR(b) "@DPDK_" RTE_STR(n))
+
+#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
@@ -79,6 +82,7 @@
* No symbol versioning in use
*/
#define VERSION_SYMBOL(b, e, n)
+#define VERSION_SYMBOL_EXPERIMENTAL(b, e)
#define __vsym
#define BIND_DEFAULT_SYMBOL(b, e, n)
#define MAP_STATIC_SYMBOL(f, p) f __attribute__((alias(RTE_STR(p))))
diff --git a/lib/librte_meter/meson.build b/lib/librte_meter/meson.build
index 646fd4d43..fce036843 100644
--- a/lib/librte_meter/meson.build
+++ b/lib/librte_meter/meson.build
@@ -3,3 +3,4 @@
sources = files('rte_meter.c')
headers = files('rte_meter.h')
+use_function_versioning = true
diff --git a/lib/librte_meter/rte_meter.c b/lib/librte_meter/rte_meter.c
index da01429a8..5244537fa 100644
--- a/lib/librte_meter/rte_meter.c
+++ b/lib/librte_meter/rte_meter.c
@@ -9,6 +9,7 @@
#include <rte_common.h>
#include <rte_log.h>
#include <rte_cycles.h>
+#include <rte_function_versioning.h>
#include "rte_meter.h"
@@ -119,8 +120,8 @@ rte_meter_trtcm_config(struct rte_meter_trtcm *m,
return 0;
}
-int
-rte_meter_trtcm_rfc4115_profile_config(
+static int
+rte_meter_trtcm_rfc4115_profile_config_(
struct rte_meter_trtcm_rfc4115_profile *p,
struct rte_meter_trtcm_rfc4115_params *params)
{
@@ -145,7 +146,35 @@ rte_meter_trtcm_rfc4115_profile_config(
}
int
-rte_meter_trtcm_rfc4115_config(
+rte_meter_trtcm_rfc4115_profile_config_s(
+ struct rte_meter_trtcm_rfc4115_profile *p,
+ struct rte_meter_trtcm_rfc4115_params *params);
+int
+rte_meter_trtcm_rfc4115_profile_config_s(
+ struct rte_meter_trtcm_rfc4115_profile *p,
+ struct rte_meter_trtcm_rfc4115_params *params)
+{
+ return rte_meter_trtcm_rfc4115_profile_config_(p, params);
+}
+BIND_DEFAULT_SYMBOL(rte_meter_trtcm_rfc4115_profile_config, _s, 20.0.1);
+MAP_STATIC_SYMBOL(int rte_meter_trtcm_rfc4115_profile_config(struct rte_meter_trtcm_rfc4115_profile *p,
+ struct rte_meter_trtcm_rfc4115_params *params), rte_meter_trtcm_rfc4115_profile_config_s);
+
+int
+rte_meter_trtcm_rfc4115_profile_config_e(
+ struct rte_meter_trtcm_rfc4115_profile *p,
+ struct rte_meter_trtcm_rfc4115_params *params);
+int
+rte_meter_trtcm_rfc4115_profile_config_e(
+ struct rte_meter_trtcm_rfc4115_profile *p,
+ struct rte_meter_trtcm_rfc4115_params *params)
+{
+ return rte_meter_trtcm_rfc4115_profile_config_(p, params);
+}
+VERSION_SYMBOL_EXPERIMENTAL(rte_meter_trtcm_rfc4115_profile_config, _e);
+
+static int
+rte_meter_trtcm_rfc4115_config_(
struct rte_meter_trtcm_rfc4115 *m,
struct rte_meter_trtcm_rfc4115_profile *p)
{
@@ -160,3 +189,27 @@ rte_meter_trtcm_rfc4115_config(
return 0;
}
+
+int
+rte_meter_trtcm_rfc4115_config_s(struct rte_meter_trtcm_rfc4115 *m,
+ struct rte_meter_trtcm_rfc4115_profile *p);
+int
+rte_meter_trtcm_rfc4115_config_s(struct rte_meter_trtcm_rfc4115 *m,
+ struct rte_meter_trtcm_rfc4115_profile *p)
+{
+ return rte_meter_trtcm_rfc4115_config_(m, p);
+}
+BIND_DEFAULT_SYMBOL(rte_meter_trtcm_rfc4115_config, _s, 20.0.1);
+MAP_STATIC_SYMBOL(int rte_meter_trtcm_rfc4115_config(struct rte_meter_trtcm_rfc4115 *m,
+ struct rte_meter_trtcm_rfc4115_profile *p), rte_meter_trtcm_rfc4115_config_s);
+
+int
+rte_meter_trtcm_rfc4115_config_e(struct rte_meter_trtcm_rfc4115 *m,
+ struct rte_meter_trtcm_rfc4115_profile *p);
+int
+rte_meter_trtcm_rfc4115_config_e(struct rte_meter_trtcm_rfc4115 *m,
+ struct rte_meter_trtcm_rfc4115_profile *p)
+{
+ return rte_meter_trtcm_rfc4115_config_(m, p);
+}
+VERSION_SYMBOL_EXPERIMENTAL(rte_meter_trtcm_rfc4115_config, _e);
diff --git a/lib/librte_meter/rte_meter_version.map b/lib/librte_meter/rte_meter_version.map
index fc12cc0bf..b4b043174 100644
--- a/lib/librte_meter/rte_meter_version.map
+++ b/lib/librte_meter/rte_meter_version.map
@@ -20,4 +20,12 @@ DPDK_20.0.1 {
rte_meter_trtcm_rfc4115_color_blind_check;
rte_meter_trtcm_rfc4115_config;
rte_meter_trtcm_rfc4115_profile_config;
+
} DPDK_20.0;
+
+EXPERIMENTAL {
+ global:
+
+ rte_meter_trtcm_rfc4115_config;
+ rte_meter_trtcm_rfc4115_profile_config;
+};
--
2.24.1
next prev parent reply other threads:[~2020-01-29 16:43 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-29 12:29 [dpdk-dev] [RFC] " Ferruh Yigit
2020-01-29 14:46 ` Bruce Richardson
2020-01-29 14:57 ` Andrzej Ostruszka
2020-01-29 16:25 ` Ferruh Yigit
2020-01-29 16:30 ` Andrzej Ostruszka
2020-01-29 16:40 ` Ferruh Yigit
2020-01-29 16:43 ` Ferruh Yigit [this message]
2020-01-29 17:49 ` [dpdk-dev] [RFC v2] " Andrzej Ostruszka
2020-01-30 12:33 ` Thomas Monjalon
2020-01-30 12:57 ` Luca Boccassi
2020-01-30 14:17 ` Thomas Monjalon
2020-01-30 14:21 ` Luca Boccassi
2020-01-30 15:55 ` Thomas Monjalon
2020-01-30 16:04 ` Luca Boccassi
2020-01-30 16:15 ` Eelco Chaudron
2020-01-30 20:20 ` Thomas Monjalon
2020-02-03 11:10 ` Eelco Chaudron
2020-01-31 9:25 ` Ferruh Yigit
2020-05-13 12:11 ` [dpdk-dev] [PATCH] meter: provide experimental alias of API for old apps Ferruh Yigit
2020-05-13 16:30 ` Thomas Monjalon
2020-05-13 17:37 ` Ferruh Yigit
2020-05-13 18:05 ` [dpdk-dev] [PATCH v2] " Ferruh Yigit
2020-05-14 8:44 ` Ray Kinsella
2020-05-14 11:53 ` [dpdk-dev] [dpdk-stable] " Ferruh Yigit
2020-05-14 11:52 ` [dpdk-dev] [PATCH v3] " Ferruh Yigit
2020-05-14 15:10 ` Ray Kinsella
2020-05-14 15:32 ` David Marchand
2020-05-14 15:56 ` Ray Kinsella
2020-05-14 16:07 ` Ferruh Yigit
2020-05-14 16:30 ` David Marchand
2020-05-14 16:11 ` [dpdk-dev] [PATCH v4] " Ferruh Yigit
2020-05-15 13:31 ` Thomas Monjalon
2020-05-15 14:41 ` Ray Kinsella
2020-05-15 15:03 ` Ray Kinsella
2020-05-15 14:36 ` [dpdk-dev] [PATCH v5] abi: " Ray Kinsella
2020-05-15 15:01 ` [dpdk-dev] [PATCH v6] " Ray Kinsella
2020-05-16 11:53 ` Neil Horman
2020-05-18 17:18 ` Thomas Monjalon
2020-05-18 17:34 ` Ferruh Yigit
2020-05-18 17:51 ` Thomas Monjalon
2020-05-18 18:32 ` Ferruh Yigit
2020-05-19 14:13 ` Ray Kinsella
2020-05-19 14:14 ` Ray Kinsella
2020-05-17 19:52 ` [dpdk-dev] [PATCH v4] meter: " Dumitrescu, Cristian
2020-05-18 6:29 ` Ray Kinsella
2020-05-18 9:22 ` Thomas Monjalon
2020-05-18 9:30 ` Ray Kinsella
2020-05-18 10:46 ` Thomas Monjalon
2020-05-18 11:18 ` Dumitrescu, Cristian
2020-05-18 11:49 ` Ray Kinsella
2020-05-18 11:48 ` Ray Kinsella
2020-05-18 12:13 ` Thomas Monjalon
2020-05-18 13:06 ` Ray Kinsella
2020-05-18 18:30 ` [dpdk-dev] [PATCH v5] " Ferruh Yigit
2020-05-19 12:16 ` [dpdk-dev] [PATCH v6] " Ferruh Yigit
2020-05-19 13:26 ` Dumitrescu, Cristian
2020-05-19 14:24 ` Thomas Monjalon
2020-05-19 14:22 ` Ray Kinsella
2020-02-02 18:53 ` [dpdk-dev] [RFC] meter: fix ABI break due to experimental tag removal Neil Horman
2020-02-03 12:53 ` Ferruh Yigit
2020-02-04 12:02 ` Neil Horman
2020-02-05 10:04 ` Luca Boccassi
2020-02-05 11:32 ` Neil Horman
2020-02-13 17:40 ` Ray Kinsella
2020-02-14 2:40 ` Neil Horman
2020-02-14 11:36 ` Bruce Richardson
2020-02-14 20:48 ` Neil Horman
2020-02-14 21:52 ` Bruce Richardson
2020-02-15 13:43 ` Neil Horman
2020-02-17 14:23 ` Ray Kinsella
2020-02-17 15:37 ` 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=20200129164350.3724793-1-ferruh.yigit@intel.com \
--to=ferruh.yigit@intel.com \
--cc=amo@semihalf.com \
--cc=bluca@debian.org \
--cc=bruce.richardson@intel.com \
--cc=cristian.dumitrescu@intel.com \
--cc=david.marchand@redhat.com \
--cc=dev@dpdk.org \
--cc=echaudro@redhat.com \
--cc=ian.stokes@intel.com \
--cc=nhorman@tuxdriver.com \
--cc=thomas@monjalon.net \
/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).