From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yk0-f170.google.com (mail-yk0-f170.google.com [209.85.160.170]) by dpdk.org (Postfix) with ESMTP id DEF3237AF for ; Mon, 2 Nov 2015 17:42:12 +0100 (CET) Received: by ykba4 with SMTP id a4so144717257ykb.3 for ; Mon, 02 Nov 2015 08:42:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=7LFsjQMe7kswVB2yL9CX5vJP28JEY6RoWDCn23BgUNU=; b=g5JRNOYFxdVNPYLQtVbaqBlZbu3CBFVkg0/g91FPLxn12kKiGH37nuc/95JgGaP7PU EVNHF/qN61uDbO1GTXB4Z66BeeMmi7iWv5GbkpPShpRow8k5Wf+9djzPEiEGh/V0qPyK j335HcqABuQAxJdePZKZdTJaYVlZZPOZzyYihN8emSabVxHrPL1zVOvePIypclER7siu koYJHLppfzkCQ+pxa2DNYJbCcdfVCuym6rQlyT2Bc3TJ9DFDlYrRtrm3a8/L4+1vGv/v 2XumOFND6wK8eYEPQn8g0rlOM1NV5q3G+UAA5bQJBomoEBlwiHryeekFqMeM2itjnnUB ycGA== X-Received: by 10.13.204.148 with SMTP id o142mr19441948ywd.137.1446482532451; Mon, 02 Nov 2015 08:42:12 -0800 (PST) Received: from gmail.com (pool-108-31-208-15.washdc.fios.verizon.net. [108.31.208.15]) by smtp.gmail.com with ESMTPSA id z14sm14044996ywz.18.2015.11.02.08.42.10 (version=TLSv1 cipher=RC4-SHA bits=128/128); Mon, 02 Nov 2015 08:42:11 -0800 (PST) Received: by gmail.com (sSMTP sendmail emulation); Mon, 2 Nov 2015 11:42:09 -0500 Date: Mon, 2 Nov 2015 11:42:09 -0500 From: Eric Kinzie To: Panu Matilainen Message-ID: <20151102164206.GA14543@roosta.home> References: <1445268976-27491-1-git-send-email-ehkinzie@gmail.com> <1445268976-27491-4-git-send-email-ehkinzie@gmail.com> <1706989.WgznurFLZ8@xps13> <563739B3.1040809@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <563739B3.1040809@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: dev@dpdk.org, Eric Kinzie Subject: Re: [dpdk-dev] [PATCH v6 3/4] bond mode 4: allow external state machine X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Nov 2015 16:42:13 -0000 On Mon Nov 02 12:23:47 +0200 2015, Panu Matilainen wrote: > On 11/01/2015 08:17 PM, Thomas Monjalon wrote: > >2015-10-19 08:36, Eric Kinzie: > >> Size of struct rte_eth_bond_8023ad_conf changed. Increment LIBABIVER > >> and version bond_mode_8023ad_setup and bond_mode_8023ad_conf_get > >> functions. > >[...] > >>+VERSION_SYMBOL(bond_mode_8023ad_setup, _v20, 2.0); > >[...] > >>+BIND_DEFAULT_SYMBOL(bond_mode_8023ad_setup, _v22, 2.2); > >>+MAP_STATIC_SYMBOL(void bond_mode_8023ad_setup(struct rte_eth_dev *dev, struct rte_eth_bond_8023ad_conf *conf), \ > >>+ bond_mode_8023ad_setup_v22); > > > >I'm sorry it doesn't work well when trying to build a combined lib: > > > >ld: libdpdk.so: version node not found for symbol bond_mode_8023ad_setup@@DPDK_2.2 > > > >The symbols are OK in the .o file: > >0000000000002340 g F .text 0000000000000171 bond_mode_8023ad_setup@@DPDK_2.2 > >0000000000002260 g F .text 00000000000000da bond_mode_8023ad_setup@DPDK_2.0 > >0000000000002260 g F .text 00000000000000da bond_mode_8023ad_setup_v20 > >0000000000002340 g F .text 0000000000000171 bond_mode_8023ad_setup_v22 > >0000000000000000 *UND* 0000000000000000 bond_mode_8023ad_setup > > > >I don't understand the problem and I am considering disabling versioning in > >combined library. > > > >Any idea? > > > > The .map additions look incorrect to me: > > >diff --git a/drivers/net/bonding/rte_eth_bond_version.map b/drivers/net/bonding/rte_eth_bond_version.map > >index 22bd920..7f78717 100644 > >--- a/drivers/net/bonding/rte_eth_bond_version.map > >+++ b/drivers/net/bonding/rte_eth_bond_version.map > >@@ -17,6 +17,9 @@ DPDK_2.0 { > > rte_eth_bond_slaves_get; > > rte_eth_bond_xmit_policy_get; > > rte_eth_bond_xmit_policy_set; > >+ rte_eth_bond_8023ad_ext_collect; > >+ rte_eth_bond_8023ad_ext_distrib; > >+ rte_eth_bond_8023ad_ext_slowtx; > > These symbols didn't exist in DPDK 2.0 but are only being added > here. So why are they being added to the 2.0 section? Yes, I think these should probably be moved. > > > > local: *; > > }; > >@@ -27,3 +30,10 @@ DPDK_2.1 { > > rte_eth_bond_free; > > > > } DPDK_2.0; > >+ > >+DPDK_2.2 { > >+ local > >+ > >+ bond_mode_8023ad_conf_get; > >+ bond_mode_8023ad_setup; > >+} DPDK_2.1; > > These are marked local, as in, "not exported" which doesn't seem > right. Also they're lacking the rte_eth_ prefix. AFAICS this is what > the symbol export map should look like here: These were not exported to begin with. But after versioning these functions, they are exported unless explicitly declared to be local here. > DPDK_2.2 { > global: > > rte_eth_bond_8023ad_ext_collect; > rte_eth_bond_8023ad_ext_distrib; > rte_eth_bond_8023ad_ext_slowtx; > rte_eth_bond_mode_8023ad_conf_get; > rte_eth_bond_mode_8023ad_setup; > } DPDK_2.1; > > That said, problems with symbol versioning and the combined library > were predicted from the start, once the individual library versions > start advancing. For one, the combined library itself is not > versioned at all it is offending the ABI policy all the time. > > Replacing the library with a linker script, as suggested before by > Neil Horman and Sergio Gonzales Monroy would eliminate these > problems. > > - Panu - > >