Fix ExtraSymbols jump table on Windows.
authorTamar Christina <tamar@zhox.com>
Tue, 14 Feb 2017 14:44:53 +0000 (09:44 -0500)
committerBen Gamari <ben@smart-cactus.org>
Tue, 14 Feb 2017 15:53:01 +0000 (10:53 -0500)
commit2f1017b924740e66f093b0baba62ac0b1528abf8
tree31bd89a27f0fc968719640e5fb7ed5c6caf8661e
parent04f67c9970c0e2599e0b2a29353b1acec72dacf0
Fix ExtraSymbols jump table on Windows.

This corrects the `jump islands` calculations for Windows.  The code was
incorrectly creating a new entry for every `usage` of a symbol instead
of every used symbol. e.g. if a symbol is used 5 times it used to create
5 jump islands. This is incorrect and not in line with what the `ELF`
and `Mach-O` linkers do. Also since we allocate `n` spaces where `n` is
number of symbols, we would quickly run out of space and abort.

Test Plan: ./validate

Reviewers: simonmar, hvr, erikd, bgamari, austin

Reviewed By: bgamari

Subscribers: thomie, #ghc_windows_task_force

Differential Revision: https://phabricator.haskell.org/D3026
rts/linker/PEi386.c