diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2016-08-18 18:16:01 +0100 |
---|---|---|
committer | Simon Peyton Jones <simonpj@microsoft.com> | 2016-08-19 08:20:58 +0100 |
commit | b2c5e4ce5c44a7be7c2b81c2600cae40c5b225ad (patch) | |
tree | ef56139032543cbef3ce4985501ff85421ce866c /includes | |
parent | 113d50b791c469394d38fab6ce5b760e5e8c35e2 (diff) | |
download | haskell-b2c5e4ce5c44a7be7c2b81c2600cae40c5b225ad.tar.gz |
Revert "codeGen: Remove binutils<2.17 hack, fixes T11758"
This reverts commit e3e2e49a8f6952e1c8a19321c729c17b294d8c92.
I'm reverting because it makes ghc-stage2 seg-fault on
64-bit Windows machines. Even ghc-stage2 --version seg-faults.
Diffstat (limited to 'includes')
-rw-r--r-- | includes/rts/storage/InfoTables.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/includes/rts/storage/InfoTables.h b/includes/rts/storage/InfoTables.h index e6bd15c887..fb14ac5821 100644 --- a/includes/rts/storage/InfoTables.h +++ b/includes/rts/storage/InfoTables.h @@ -15,6 +15,17 @@ Several pointer fields in info tables are expressed as offsets relative to the info pointer, so that we can generate position-independent code. + + Note [x86-64-relative] + There is a complication on the x86_64 platform, where pointers are + 64 bits, but the tools don't support 64-bit relative relocations. + However, the default memory model (small) ensures that all symbols + have values in the lower 2Gb of the address space, so offsets all + fit in 32 bits. Hence we can use 32-bit offset fields. + + Somewhere between binutils-2.16.1 and binutils-2.16.91.0.6, + support for 64-bit PC-relative relocations was added, so maybe this + hackery can go away sometime. ------------------------------------------------------------------------- */ #if x86_64_TARGET_ARCH |