From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.tuxdriver.com (charlotte.tuxdriver.com [70.61.120.58]) by dpdk.org (Postfix) with ESMTP id CC2E88D96 for ; Tue, 1 Dec 2015 14:20:43 +0100 (CET) Received: from hmsreliant.think-freely.org ([2001:470:8:a08:7aac:c0ff:fec2:933b] helo=localhost) by smtp.tuxdriver.com with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.63) (envelope-from ) id 1a3krC-000594-0q; Tue, 01 Dec 2015 08:20:39 -0500 Date: Tue, 1 Dec 2015 08:20:27 -0500 From: Neil Horman To: Stephen Hemminger Message-ID: <20151201132027.GA26189@hmsreliant.think-freely.org> References: <079fa1cfc3550c8147ea8b137fa1bc0f34d051dc.1448375477.git.pmatilai@redhat.com> <20151124144638.0b659e7d@xeon-e3> <56557398.3020600@redhat.com> <20151125080837.68e24a2d@xeon-e3> <20151130150343.GA9434@hmsreliant.think-freely.org> <20151130084102.3f386b50@xeon-e3> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20151130084102.3f386b50@xeon-e3> User-Agent: Mutt/1.5.24 (2015-08-30) X-Spam-Score: -1.0 (-) X-Spam-Status: No Cc: dev@dpdk.org Subject: Re: [dpdk-dev] [PATCH] mk: fix the combined library problems by replacing it with a linker script 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: Tue, 01 Dec 2015 13:20:44 -0000 On Mon, Nov 30, 2015 at 08:41:02AM -0800, Stephen Hemminger wrote: > On Mon, 30 Nov 2015 10:03:43 -0500 > Neil Horman wrote: > > > On Wed, Nov 25, 2015 at 08:08:37AM -0800, Stephen Hemminger wrote: > > > On Wed, 25 Nov 2015 10:38:48 +0200 > > > Panu Matilainen wrote: > > > > > > > On 11/25/2015 12:46 AM, Stephen Hemminger wrote: > > > > > On Tue, 24 Nov 2015 16:31:17 +0200 > > > > > Panu Matilainen wrote: > > > > > > > > > >> The physically linked-together combined library has been an increasing > > > > >> source of problems, as was predicted when library and symbol versioning > > > > >> was introduced. Replace the complex and fragile construction with a > > > > >> simple linker script which achieves the same without all the problems, > > > > >> remove the related kludges from eg mlx drivers. > > > > >> > > > > >> Since creating the linker script is practically zero cost, remove the > > > > >> config option and just create it always. > > > > >> > > > > >> Based on a patch by Sergio Gonzales Monroy, linker script approach > > > > >> initially suggested by Neil Horman. > > > > >> > > > > >> Suggested-by: Sergio Gonzalez Monroy > > > > >> Suggested-by: Neil Horman > > > > >> Signed-off-by: Panu Matilainen > > > > > > > > > > But it now means distros have to ship 20 libraries which seems like > > > > > a step back. > > > > > > > > That's how Fedora and RHEL are shipping it already and nobody has so > > > > much as noticed anything strange, much less complained about it. 20 > > > > libraries is but a drop in the ocean on a average distro. But more to > > > > the point, distros will prefer 50 working libraries over one that doesn't. > > > > > > > > The combined library as it is simply is no longer a viable option. > > > > Besides just being broken (witness the strange hacks people are coming > > > > up with to work around issues in it) its ugly because it basically gives > > > > the middle finger to all the effort going into version compatibility, > > > > and its also big. Few projects will use every library in DPDK, but with > > > > the combined library they're forced to lug the 800 pound gorilla along > > > > needlessly. > > > > > > > > - Panu - > > > > > > > > > > Fixing the combined library took less than an hour for us. > > How did you fix the versioning issue? > > > > Neil > > This is what I did. > Also decided to keep shared library version == major DPDK version > to avoid confusion. > Ok, thats the library versioning, which is great, but I was more concerned about the symbol versioning - i.e. the collection of version linker scripts that get applied when you build individual libraries, but completely ignored when you build the combined library Neil > > mk: fix when building combined shared library > > The DPDK mk file does not set shared object name or version > information as required by Debian. > > Signed-off-by: Stephen Hemminger > > --- a/mk/rte.sharelib.mk > +++ b/mk/rte.sharelib.mk > @@ -51,10 +51,10 @@ ifeq ($(LINK_USING_CC),1) > # Override the definition of LD here, since we're linking with CC > LD := $(CC) $(CPU_CFLAGS) > O_TO_S = $(LD) $(call linkerprefix,$(CPU_LDFLAGS)) \ > - -shared $(OBJS) -o $(RTE_OUTPUT)/lib/$(LIB_ONE) > + -shared $(OBJS) -Wl,-soname,$(LIB_ONE).$(RTE_LIBVERS) -o $(RTE_OUTPUT)/lib/$(LIB_ONE) > else > O_TO_S = $(LD) $(CPU_LDFLAGS) \ > - -shared $(OBJS) -o $(RTE_OUTPUT)/lib/$(LIB_ONE) > + -shared $(OBJS) -soname $(LIB_ONE).$(RTE_LIBVERS) -o $(RTE_OUTPUT)/lib/$(LIB_ONE) > endif > > O_TO_S_STR = $(subst ','\'',$(O_TO_S)) #'# fix syntax highlight > --- a/mk/rte.vars.mk > +++ b/mk/rte.vars.mk > @@ -74,8 +74,10 @@ ifneq ($(BUILDING_RTE_SDK),) > endif > > RTE_LIBNAME := $(CONFIG_RTE_LIBNAME:"%"=%) > +RTE_LIBVERS := $(CONFIG_RTE_LIBVERS:"%"=%) > ifeq ($(RTE_LIBNAME),) > RTE_LIBNAME := intel_dpdk > +RTE_LIBVERS := 2 > endif > > # RTE_TARGET is deducted from config when we are building the SDK. >