From patchwork Fri May 27 16:48:05 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ferruh Yigit X-Patchwork-Id: 13054 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 32B9156A9; Fri, 27 May 2016 18:48:15 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id C61C15690 for ; Fri, 27 May 2016 18:48:13 +0200 (CEST) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga101.fm.intel.com with ESMTP; 27 May 2016 09:48:13 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.26,374,1459839600"; d="scan'208";a="963697710" Received: from irvmail001.ir.intel.com ([163.33.26.43]) by orsmga001.jf.intel.com with ESMTP; 27 May 2016 09:48:12 -0700 Received: from sivswdev02.ir.intel.com (sivswdev02.ir.intel.com [10.237.217.46]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id u4RGm80X000478; Fri, 27 May 2016 17:48:08 +0100 Received: from sivswdev02.ir.intel.com (localhost [127.0.0.1]) by sivswdev02.ir.intel.com with ESMTP id u4RGm8po003512; Fri, 27 May 2016 17:48:08 +0100 Received: (from fyigit@localhost) by sivswdev02.ir.intel.com with id u4RGm8XZ003508; Fri, 27 May 2016 17:48:08 +0100 From: Ferruh Yigit To: dev@dpdk.org Cc: Panu Matilainen , Christian Ehrhardt , Thomas Monjalon , Ferruh Yigit Date: Fri, 27 May 2016 17:48:05 +0100 Message-Id: <1464367686-3475-1-git-send-email-ferruh.yigit@intel.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <574872B3.6040702@intel.com> References: <574872B3.6040702@intel.com> Subject: [dpdk-dev] [PATCH 1/2] mk: prevent overlinking in applications 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Replace --no-as-needed linker flag with --as-needed flag, which will only link libraries directly called by application. This requires inter library dependencies resolved correctly. Not linking all libraries cause a compile error for lpcap and possible to have other similar compiler errors, so increasing the scope of --start-group argument. cmdline_test application causes compile error because of cyclic dependency between librte_eal <-> librte_mempool. A workaround added to cmdline_test for compile error. Signed-off-by: Ferruh Yigit --- This patch is on top of patch: http://dpdk.org/dev/patchwork/patch/12987/ --- app/cmdline_test/Makefile | 1 + mk/exec-env/linuxapp/rte.vars.mk | 2 +- mk/rte.app.mk | 3 +-- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/cmdline_test/Makefile b/app/cmdline_test/Makefile index c6169f5..5b7a2a2 100644 --- a/app/cmdline_test/Makefile +++ b/app/cmdline_test/Makefile @@ -46,6 +46,7 @@ SRCS-y += commands.c CFLAGS += -O3 CFLAGS += $(WERROR_FLAGS) +LDFLAGS += -no-as-needed # this application needs libraries first DEPDIRS-y += lib drivers diff --git a/mk/exec-env/linuxapp/rte.vars.mk b/mk/exec-env/linuxapp/rte.vars.mk index d51bd17..10d37d5 100644 --- a/mk/exec-env/linuxapp/rte.vars.mk +++ b/mk/exec-env/linuxapp/rte.vars.mk @@ -46,7 +46,7 @@ EXECENV_CFLAGS = -pthread endif # Workaround lack of DT_NEEDED entry -EXECENV_LDFLAGS = --no-as-needed +EXECENV_LDFLAGS = --as-needed EXECENV_LDLIBS = EXECENV_ASFLAGS = diff --git a/mk/rte.app.mk b/mk/rte.app.mk index b84b56d..e12226c 100644 --- a/mk/rte.app.mk +++ b/mk/rte.app.mk @@ -58,6 +58,7 @@ _LDLIBS-y += -L$(RTE_SDK_BIN)/lib # _LDLIBS-y += --whole-archive +_LDLIBS-y += --start-group _LDLIBS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += -lrte_distributor _LDLIBS-$(CONFIG_RTE_LIBRTE_REORDER) += -lrte_reorder @@ -111,8 +112,6 @@ _LDLIBS-y += -lcrypto endif endif # !CONFIG_RTE_BUILD_SHARED_LIBS -_LDLIBS-y += --start-group - _LDLIBS-$(CONFIG_RTE_LIBRTE_KVARGS) += -lrte_kvargs _LDLIBS-$(CONFIG_RTE_LIBRTE_MBUF) += -lrte_mbuf _LDLIBS-$(CONFIG_RTE_LIBRTE_IP_FRAG) += -lrte_ip_frag