summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorSimon Peyton Jones <simonpj@microsoft.com>2016-08-18 18:16:01 +0100
committerSimon Peyton Jones <simonpj@microsoft.com>2016-08-19 08:20:58 +0100
commitb2c5e4ce5c44a7be7c2b81c2600cae40c5b225ad (patch)
treeef56139032543cbef3ce4985501ff85421ce866c /includes
parent113d50b791c469394d38fab6ce5b760e5e8c35e2 (diff)
downloadhaskell-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.h11
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