F.2.2 Static Address Initializers
Address-bearing __static_words__ entries and stable globals are emitted as C99 pointer or function-pointer initializers in an 8-byte udewy_slot union. This lets the C linker initialize function, string, and static-storage references directly; generated programs do not need a startup function to patch address values into otherwise static data. Integer-only globals remain ordinary udewy_word objects.
This lowering relies on the target ABI representing object and function pointers in one 64-bit word, with pointer object bytes matching the corresponding uintptr_t value. Generated C contains compile-time size checks. A standalone probe checks the remaining representation and indirect-call assumptions for a particular compiler, target ABI, and optimization mode:
cc -std=c99 -O2 udewy/backend/c_abi_probe.c -o /tmp/udewy-c-abi-probe
/tmp/udewy-c-abi-probe
Passing the probe certifies that compiler/target/options combination, not every compiler for the same architecture. Cross-compiled probes must be executed on the target hardware or under an emulator.