1.2 KiB
1.2 KiB
Handoff — the ABI marker symbol, so a crossed pair is refused at dlopen
Branch dev-loop, from 682cb74. This closes the serious finding of HANDOFF-x86-aggregates.md: a
redefinition module built by one backend, dlopened into a host built by the other, links and loads and then
dies with SIGSEGV at the first call into a redefined function that takes or returns a struct. Nothing refused
it, and flan build game.flan --x86 --dev followed by flan reload game.flan changed.flan builds exactly that
pair.
The plan
A marker symbol, as that handoff recommended.
X86.programdefinesflan.abi.x86;X86.redefinitionemits a data relocation against it.Emit.programdefinesflan.abi.llvm;Emit.redefinitionemits one against that.- Both sides gated on
dev, so a release build's output is byte-for-byte what it was. - The two
dlopensites —test/reload_host.candvendor/agent/flan_agent.c— recognise aflan.abi.failure and say, in a sentence, that the module and the host were built by different backends. test/test_reload.mlgains the crossed pair, both directions, asserting the refusal.
flan reload --x86 is judged out of scope; see below.
Status
In progress. This file is written early and updated as the work lands.