[dpdk-dev,v2,4/6] mk: prevent overlinking in applications
Commit Message
From: Ferruh Yigit <ferruh.yigit@intel.com>
Replace --no-as-needed linker flag with --as-needed flag, which will
only link libraries directly called by application.
It can be achieved now that the libraries dependencies are handled
properly.
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
---
v2: remove workarounds and workaround comment
---
mk/exec-env/linuxapp/rte.vars.mk | 3 ---
mk/rte.app.mk | 3 +++
2 files changed, 3 insertions(+), 3 deletions(-)
Comments
On 6/10/2016 2:19 PM, Thomas Monjalon wrote:
> From: Ferruh Yigit <ferruh.yigit@intel.com>
>
> Replace --no-as-needed linker flag with --as-needed flag, which will
> only link libraries directly called by application.
> It can be achieved now that the libraries dependencies are handled
> properly.
>
> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
> Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
> ---
...
> endif
>
> +# Link only the libraries used in the application
> +LDFLAGS += --as-needed
For the case we need to have workaround for application, this doesn't
let because last argument wins.
Can we say as following :
LDFLAGS = --as-needed $(LDFLAGS)
> +
> # default path for libs
> _LDLIBS-y += -L$(RTE_SDK_BIN)/lib
>
>
2016-06-10 15:56, Ferruh Yigit:
> On 6/10/2016 2:19 PM, Thomas Monjalon wrote:
> > From: Ferruh Yigit <ferruh.yigit@intel.com>
> >
> > Replace --no-as-needed linker flag with --as-needed flag, which will
> > only link libraries directly called by application.
> > It can be achieved now that the libraries dependencies are handled
> > properly.
[...]
> > +# Link only the libraries used in the application
> > +LDFLAGS += --as-needed
>
> For the case we need to have workaround for application, this doesn't
> let because last argument wins.
>
> Can we say as following :
> LDFLAGS = --as-needed $(LDFLAGS)
It should be LDFLAGS := --as-needed $(LDFLAGS)
But I would prefer we avoid workarounds.
@@ -45,9 +45,6 @@ else
EXECENV_CFLAGS = -pthread
endif
-# Workaround lack of DT_NEEDED entry
-EXECENV_LDFLAGS = --no-as-needed
-
EXECENV_LDLIBS =
EXECENV_ASFLAGS =
@@ -50,6 +50,9 @@ ifeq ($(NO_LDSCRIPT),)
LDSCRIPT = $(RTE_LDSCRIPT)
endif
+# Link only the libraries used in the application
+LDFLAGS += --as-needed
+
# default path for libs
_LDLIBS-y += -L$(RTE_SDK_BIN)/lib