This change implements lowering of references global symbols in
PIC mode.
This change implements lowering of global references in PIC mode using
a new @GOT reference type. @GOT references can be used with function
or data symbol names combined with the get_global instruction. In
this case the linker will insert the wasm global that stores the address of
the symbol (either in memory for data symbols or in the wasm table
for function symbols).
For now I'm continuing to use the R_WASM_GLOBAL_INDEX_LEB relocation
type for this type of reference which means that this relocation type can
refer to either a global or a function or data symbol. We could choose to
introduce specific relocation types for GOT entries in the future.
See the current dynamic linking proposal:
https://github.com/WebAssembly/tool-conventions/blob/master/DynamicLinking.md
sad how often mutable is used in LLVM. I guess maybe it means we're too aggressive about const overall?