[dpdk-dev] weak functions in some drivers

Elo, Matias (Nokia - FI/Espoo) matias.elo at nokia-bell-labs.com
Fri Jul 1 11:42:19 CEST 2016


> > >>> What is not clear to me is motivation to use weak here instead of simply
> > using >CONFIG_RTE_I40E_INC_VECTOR
> > >>> macro to exclude stubs in i40e_rxtx.c. It will make library smaller and avoid
> > issues like this one
> > >>> which are quite hard to troubleshoot.
> > >> Since this issue seen in fd.io, I didn't investigated more, but I don't
> > >> want to clock your valid question, this is an attempt to resurrect the
> > >> question ...
> > > Hi,
> > >
> > > We are having exactly the same problem. For us the aforementioned
> > workaround doesn't seem to work and vector mode is always disabled with the
> > i40e drivers. If I modify i40e_rxtx.c and exclude the stub functions using
> > CONFIG_RTE_I40E_INC_VECTOR everything works as expected.
> > >
> > > We are building DPDK with the CONFIG_RTE_BUILD_COMBINE_LIBS option
> > enabled and link DPDK library to our application.
> > >
> > > Any other ideas how this could be fixed?
> > >
> > > Regards,
> > > Matias
> > >
> >
> > So you have tried to link a combined static lib with --whole-archive
> > -ldpdk --no-whole-archive and still get the wrong/weak function definition?
> >
> > Sergio
> 
> I actually just managed to fix the problem. In our case I had to add
> '-Wl,--whole-archive,-ldpdk,--no-whole-archive'  to the end of AM_LDFLAGS.
> 

It turned out that the problem actually wasn't fixed.

DPDK is built with CONFIG_RTE_BUILD_COMBINE_LIBS=y and EXTRA_CFLAGS="-fPIC"

What we are linking originally:
	-l:libdpdk.a

This works otherwise but vector mode i40e is not enabled.

When trying:
	-Wl,--whole-archive,-l:libdpdk.a,--no-whole-archive

Linking fails with ' undefined reference' errors to several dpdk functions (rte_eal_init, rte_cpu_get_flag_enabled, rte_eth_stats_get...).

Btw. there seems to be a Stack Overflow question related to this: http://stackoverflow.com/questions/38064021/dpdk-include-libraries-in-dpdk-application-compiled-as-shared-library 

-Matias


More information about the dev mailing list