See this issue for more context:
Instead of putting all global variable descriptions in one large
chunk, we emit one descriptor global for each original global. This
is more linker-gc friendly, as now individual globals can be
discarded along with their descriptors when unused.
The address of the descriptor section is obtained in the module
constructor and passed to the global registration function as an
argument. Similarly to MachO, we use a per-DSO registration flag. We
use the new SHT_ASSOCIATED section flag to link the global and its
descriptor together for linker GC.