WebAssembly backend
===================

The WebAssembly module file format, at present, is a very simple object file format with up to 11 numbered sections plus named ``custom'' sections. At present, there is no standard for relocations or symbols, though a "name" subsection can assign names to function indices and local variables.

As such, it offers no real advantages over ELF, and intermediate ELF files can be used to produce WebAssembly modules. The WebAssembly backend aims to enable the opposite: reading a WebAssembly module and producing an ELF file containing the same information, which can then be manipulated and inspected with standard tools.

When writing WebAssembly modules, the WebAssembly backend attempts to determine based on the section name whether to use a numeric section id, a named section header, or to include the section verbatim, assuming it already contains any necessary header.

Function names are supported as symbols; local names and WebAssembly relocation sections are currently unsupported.

There are slight differences in the LEB128 integer implementations between the WebAssembly specification and the BFD code; these result in some malformed WebAssembly modules being treated as valid.

File layout
-----------

For a description of the WebAssembly file format, see https://github.com/WebAssembly/design/blob/master/BinaryEncoding.md.