XO0608: two C ABI export modules define the same function name
Every top level function of std/native/llrt/cabi.xo and the cabi_*.xo modules (except cabi_libc’s, which keep their C names) becomes the C ABI symbol xo_x_<name>, and all of those modules share that one namespace. Two of them defining a function of the same name would give the program two definitions of one symbol, which the assembler or linker rejects. The checker reports the second definition and notes the first. Only the native std’s own modules are export modules, so user code never sees this. Rename one of the two (grep the cabi modules for the name first).
Example
// std/native/llrt/cabi_poll.xo
fn poll_wait(ep: Int, evs: Int, n: Int, ms: Int) -> Int { 0 }
// std/native/llrt/cabi.xo
fn poll_wait(c: Int) {}Fix
// std/native/llrt/cabi_poll.xo
fn poll_wait(ep: Int, evs: Int, n: Int, ms: Int) -> Int { 0 }
// std/native/llrt/cabi.xo
fn poll_park_wait(c: Int) {}Run xo explain XO0608 for this text in a terminal, or see
section 10.6 of the specification.