All references to interposable symbols can be redirected at runtime to
point to a different symbol definition (with the same name). For
example, if both dylib A and B define symbol _foo, and we load A before
B at runtime, then all references to _foo within dylib B will point to
the definition in dylib A.
ld64 makes all extern symbols interposable when linking with
-flat_namespace.
TODO 1: Support -interposable and -interposable_list, which should
just be a matter of parsing those CLI flags and setting the
Defined::interposable bit.
TODO 2: Set Reloc::FinalDefinitionInLinkageUnit correctly with this info
(we are currently not setting it at all, so we're erring on the
conservative side, but we should help the LTO backend generate more
optimal code.)
Could this be a config property rather than a per-symbol? It looks like a link invocation will always have flat_namespace or never have it.