[dpdk-dev] [PATCH 2/2] mk: reduce scope of whole-archive to pmd libraries

Ferruh Yigit ferruh.yigit at intel.com
Fri Jun 10 15:35:25 CEST 2016


On 6/10/2016 1:21 PM, Thomas Monjalon wrote:
> 2016-06-10 12:06, Ferruh Yigit:
>> On 6/10/2016 11:18 AM, Thomas Monjalon wrote:
>>> 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'
>>>
>> If there is a direct call to that API, linker should include required
>> object file into final binary, --whole-archive shouldn't be required for
>> this.
>>
>> What is special for PMD's is there are not directly called, but
>> initialized using constructors.
>>
>> How are you getting above compilation error?
> 
> The error was generated with your patch on top of others I'm going to send.
> I suggest to continue the discussion/review based on the v2 coming soon.
> 

I have quickly checked v2, you are getting this compiler error because
--start-group/--end-group removed, so pmd not able to resolve the
references. And you are working around this by adding all object of
library unconditionally (--whole-archive). I will comment more of v2 patch.

Thanks,
ferruh


More information about the dev mailing list