> External, not in-tree, plugins reach directly into fib/ip/session, often 
> through header inlines that dereference core globals (ip4_main, session_main, 
> other pools), so the export set has to cover data symbols, not just 
> functions, and we can't prove that set complete from in-tree plugins alone. A 
> missing data symbol is a silent dlopen failure downstream. We can 
> incrementally work on this if we want tighter control, but just switching to 
> hidden visibility will have a lot of side effects.
> -Bsymbolic-functions doesn't have that failure mode, i.e., nothing leaves 
> .dynsym, so every external plugin that calls into vnet keeps resolving, it 
> only defeats interposition. And since we extend almost entirely through 
> vfts/registration rather than symbol override, the only interposition points 
> that binding would break are our weak symbols. So we should probably audit 
> those if we want to improve Skylakes.

I'd lean towards changing visibility to hidden on my side:
 - this is what we do for some components already, and it makes for a cleaner 
interface
 - that's the price you pay for having external plugins: build breaks from time 
to time. But we should be able to tackle most of them already with internal 
plugins, and adding the few missing ones as they are found should be easy
 - I do not think we care about Skylake perf that much anymore, but we do care 
about ARM64 :)

Best,
ben
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#27144): https://lists.fd.io/g/vpp-dev/message/27144
Mute This Topic: https://lists.fd.io/mt/120410674/21656
Group Owner: [email protected]
Unsubscribe: https://lists.fd.io/g/vpp-dev/leave/14379924/21656/631435203/xyzzy 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to