[dpdk-dev] [PATCH] telemetry: fix shared build for make

Thomas Monjalon thomas at monjalon.net
Wed Nov 7 22:08:28 CET 2018


07/11/2018 19:10, Kevin Laatz:
> Currently, telemetry is not working for shared builds in make.
> 
> The --as-needed flag is preventing telemetry from being linked as there are
> no direct API calls from the app to telemetry. This is causing the
> --telemetry option to not be recognized by EAL.
> Telemetry registers it's EAL option using the RTE_INIT constructor. Since
> EAL's option parsing is done before the plugins init, the --telemetry
> option isn't registered at the time of parsing, and as a result, the
> --telemetry option is not being recognized.

I do not understand how linking is related to parsing done before plugin init.
Do you mean telemetry cannot be linked with dlopen?

It makes me think that we could have avoided all the rte_option
infrastructure by using plugin loading.
If it is built statically, we can enable telemetry with a compilation
option. If it is built as a shared library, the -d option is enough.

About the patch itself,

> This patch fixes this issue by explicitly linking telemetry to the
> application by setting the "--no-as-needed" flag for the library in
> mk/rte.app.mk.
> 
> Fixes: 8877ac688b52 ("telemetry: introduce infrastructure")
> 
> Reported-by: Yanjie Xu <yanjie.xu at intel.com>
> Signed-off-by: Kevin Laatz <kevin.laatz at intel.com>
[...]
> --- a/mk/rte.app.mk
> +++ b/mk/rte.app.mk
> +_LDLIBS-$(CONFIG_RTE_LIBRTE_TELEMETRY)      += --no-as-needed
>  _LDLIBS-$(CONFIG_RTE_LIBRTE_TELEMETRY)      += --whole-archive
>  _LDLIBS-$(CONFIG_RTE_LIBRTE_TELEMETRY)      += -lrte_telemetry -ljansson
>  _LDLIBS-$(CONFIG_RTE_LIBRTE_TELEMETRY)      += --no-whole-archive
> +_LDLIBS-$(CONFIG_RTE_LIBRTE_TELEMETRY)      += --as-needed

It is forcing --as-needed even if it was disabled in LDFLAGS.
I think this form may be better:
	--push-state,--as-needed
	--pop-state
but it may not be supported by all linkers.





More information about the dev mailing list