On 3/11/20 1:51 PM, Richard Biener wrote:
I'm not sure I understand the versioning, we should aim at something where
an updated plugin can talk to old and new ld and where a new ld can also talk
to an old plugin.  That requires an arbitration which I don't see implemented?

So ld-new will set new callbacks tv_add_symbols_v2 and tv_get_symbols_v4, these 
contain
ld_plugin_symbol_v2 with filled ::symbol_type. ld-new will check for he new API 
with
LDPT_GET_SYMBOLS_V4, LDPT_ADD_SYMBOLS_V2 and will tv_add_symbols and 
tv_get_symbols callbacks.

ld-old will use the old tv_add_symbols and tv_get_symbols callback.

One another level of compatibility is the LTO bytecode, where new plugin should
handle also old LTO bytecode. That's done with parsing of LTO bytecode version
(lto_section).


Splitting an existing field isn't hackish IMHO.  I guess even
explicitely changing it
to one short and two char fields would be OK.

Then I'm fine with that as well. Am I right that the split order
will depend of the endianess?


Is there a comprehensive list of plugins out in the wild using the LD
plugin API?

I know only about:
$ ls /usr/lib/bfd-plugins
liblto_plugin.so.0.0.0  LLVMgold.so

and I know about Alexander Monakov (some dead code elimination plug-in).


Note we also have to bring in gold folks (not sure if lld also
implements the same
plugin API)

I don't see how can they be affected?

Martin


Reply via email to