Remove read_info.rs entirely.
Add `to_compile_error` that converts a WasmResult into a Result<_, CompileError>, use it with `wptype_to_type`. This is a candidate for being moved into shared code.
Many functions had to change to deal with propagating CompileError.
This rewrites the whole relocation parsing to work properly.
* we no longer use LocalRelocation and simply assign a new SectionIndex as new sections are encountered.
* we no longer use string matching to determine what function applies relocations to what, instead we use the field in the elf section header that tells us
* we no longer merge sections, each section from every function is preserved as an independent custom section in the module.
* we now discover any new sections that need to be pulled in recursively as we parse each section
* many error cases are either handled, or report CompileErrors.
This updates to a newer inkwell to pick up a fix to Section::get_contents. Picking that up changed builder.build_struct_gep to return a Result, and there's many API updates scattered around to support that.
Compute the function names for all local and imported functions in the module in advance and pass that mapping to the function code generation.
debug_trap is added to Intrinsics, though all users are commented out.
Start filling in the code to generate trampolines. Move func_type_to_llvm and type_to_llvm from code.rs to intrinsics.rs so that trampoline code can reuse them.
Fix creation of the target machine. Fix CPU features, architecture and target name.
Function names are not mandatory. Support unnamed functions.
Include parameters and local variables in the list of local variables for LLVMFunctionCodeGenerator.
Run the tests single-threaded, using a Mutex in the rayon code. This means that only the first error is real, subsequent errors are just picking up the panic across threads.
Add TODOs about attributes on vmctx.