And adds corresponding memory.init and data.drop instructions to
initialize the passive segments in __wasm_call_ctors. Using
passive segments prevents segments from automatically being
reinitialized every time a new WebAssembly instance is created,
e.g. when creating a thread on a new worker.
memory.init, data.drop, and passive segments are a feature of
bulk memory, but the linker emits them when the memory is shared
whether or not bulk memory is enabled because doing otherwise
does not correctly implement source language semantics. This
means that additional postprocessing to separate the segments
into a mem file is necessary when building for Chrome 74 or any
other target that implements atomics but not bulk memory. It is
our hope that in the future there will be no such targets, in
which case we can make atomics imply bulk memory.