2016-06-10 10:57, Ferruh Yigit: > On 6/10/2016 10:03 AM, Thomas Monjalon wrote: > > 2016-05-27 17:48, Ferruh Yigit: > >> --whole-archive argument only required for pmd libraries, and currently > >> it covers more libraries. Reducing scope of the argument to pmd > >> libraries slightly reduce final application size. > > > > In my understanding, --whole-archive is required for static libraries used > > by plugins: > > http://dpdk.org/commit/20afd76a > Right, required for static libraries. But more than used by plugins, > required for plugin to work. > > > If we want to restrict it, I would say it must be around EAL, ring, > > mbuf, mempool, ethdev, cryptodev, etc. > > > > We should restrict to plugins. What happens is, since there is no direct > call to PMDs from application, PMD code is not included into final > application. To force PMDs to be included into final binary, > --whole-archive is required. > > But --whole-archive is not required for other libraries, and just cause > unnecessary increase in binary size.
Yes it is necessary for other libraries, otherwise some symbols needed by plugins won't be available. Example: In function `rte_pmd_af_packet_devuninit': rte_eth_af_packet.c:(.text+0x8bf): undefined reference to `rte_eth_dev_allocated' rte_eth_af_packet.c:(.text+0x930): undefined reference to `rte_eth_dev_release_port'