From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 72C88A0613 for ; Tue, 24 Sep 2019 12:25:45 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 46A602C19; Tue, 24 Sep 2019 12:25:44 +0200 (CEST) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by dpdk.org (Postfix) with ESMTP id 73DFC2BE9 for ; Tue, 24 Sep 2019 12:25:42 +0200 (CEST) X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Sep 2019 03:25:41 -0700 X-IronPort-AV: E=Sophos;i="5.64,543,1559545200"; d="scan'208";a="188415120" Received: from bricha3-mobl.ger.corp.intel.com ([10.237.221.95]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Sep 2019 03:25:38 -0700 Date: Tue, 24 Sep 2019 12:25:35 +0200 From: Bruce Richardson To: Andrzej Ostruszka Cc: Thomas Monjalon , Ray Kinsella , dev@dpdk.org, Aaron Conole , Michael Santana , John McNamara , Marko Kovacevic , David Hunt , Vladimir Medvedkin , Robert Sanford , Erik Gabriel Carrillo , mattias.ronnblom@ericsson.com, stephen@networkplumber.org, Andrzej Ostruszka , nhorman@tuxdriver.com Message-ID: <20190924102534.GA2021@bricha3-MOBL.ger.corp.intel.com> References: <20190917075754.8310-1-amo@semihalf.com> <20190919151624.GA1999@bricha3-MOBL.ger.corp.intel.com> <1873473.QF300kEeir@xps> <20190923120658.GA2003@bricha3-MOBL.ger.corp.intel.com> <20190923161326.GB2003@bricha3-MOBL.ger.corp.intel.com> <42bc3e03-768f-b90c-5f81-5a1cb525bb2f@semihalf.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <42bc3e03-768f-b90c-5f81-5a1cb525bb2f@semihalf.com> User-Agent: Mutt/1.11.4 (2019-03-13) Subject: Re: [dpdk-dev] [PATCH v2 01/10] build: add an option to enable LTO build X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Tue, Sep 24, 2019 at 08:46:25AM +0200, Andrzej Ostruszka wrote: > On 9/23/19 6:13 PM, Bruce Richardson wrote: > [...] > > However, testing on my system with the meson build, I'm getting lots of > > link errors [See below]. Any suggestions? > > > > /Bruce > > > > /usr/bin/ld: /tmp/dpdk-testpmd.hncbtE.ltrans93.ltrans.o: in function `ena_stop': > > :(.text+0x9ed6): undefined reference to `rte_timer_stop' > [...] > > What is 'default_library'? It should be 'shared' as mentioned in the > docs. The problem is that RTE_BUILD_SHARED_LIB is statically defined in > rte_config.h used by meson build. This results in broken static > libraries (those that are using versioned symbols - like > timer/lpm/distributor) - since the MAP_STATIC_SYMBOL macro defining the > default alias is empty. With LTO compiler (or rather linker) is quite > aggressive in removing stuff that it thinks is not needed. > > Regards > Andrzej > > PS. IMHO this SHARED_LIB define should be removed from the rte_config.h > and meson.build should be updated to detect 'default_library' and add it > as needed. Don't know exactly how meson behaves if 'default_library' is > 'both' - the docs say that it reuses objects from static build, so we > might have to work around it for LTO & 'both'. That proposal won't work either as we build both static and shared libraries in all cases - the default_library value only affects whether the test apps are linked against the .a or .so files. The real issue seems to be that the compat.h header has different compilation paths for static and shared libraries, which means that any C file including it can't have a .o file that can be used for both a .a and a .so simultaneously. Having it default to the shared library path seems to work fine thus far, but with LTO it seems broken as you say. Adding Neil as the original file author of this in case he has any suggestions here. I'd really rather not have to go back to building .a's and .so's separately. Regards, /Bruce