I'll add global store as a follow-up.
Note that WebAssembly globals *must* be address not-taken, which allows for some magical optimizations by the in-browser JIT. The LLVM backend will need to linearize all address-taken globals into a heap, and GEP into that special global (and that'll need appending linkage when mashing object files together). This will be done later.