[ORC-RT][ORC][MachO] Add executor-side symbol tables to MachO platform support.
Adds symbol tables to the JITDylibState struct in the ORC runtime MachOPlatformRuntimeState class. This table will hold the addresses of materialized symbols (registered by a new JITLink pass in MachOPlatform), allowing these to be looked up in the executor without an IPC request to the controller. The old lookup-symbols callback (made by the runtime in response to dlsym lookups) is replaced with a push-symbols callback that can trigger materialization of requested symbols. Holding a symbol table on the executor side should make repeat calls to dlsym (and other symbol lookup operations) cheaper since the IPC to trigger materialization happens at most once per symbol. It should also enable us (at some point in the future) to symbolicate backtraces in JIT'd code even if the controller process is gone (e.g. detached or crashed). The trade-off for this is increased memory consumption in the executor and larger JIT'd data transfers (since symbol names are now transferred to the executor unconditionally, even though they may never be used).
Loading
Please sign in to comment