From a914a2249f13e36695060084465e97c2174ab71d Mon Sep 17 00:00:00 2001 From: "gwright@antiope.com" Date: Wed, 9 Feb 2011 22:24:23 +0000 Subject: [PATCH] Fix #4867, ghci displays negative floats incorrectly This patch fixes the erroneous relocations that caused the bug in ticket #4867. External addresses and global offset table entries were relocated correctly, but all other relocations were incorrectly calculated. This caused, for example, bad references to constants stored in the __const section of the __TEXT segment. This bug only affected OS X on 64-bit platforms. --- rts/Linker.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/rts/Linker.c b/rts/Linker.c index 70aae3b..ee7a9c9 100644 --- a/rts/Linker.c +++ b/rts/Linker.c @@ -4690,9 +4690,7 @@ static int relocateSection( } else { - value = sections[reloc->r_symbolnum-1].offset - - sections[reloc->r_symbolnum-1].addr - + (uint64_t) image; + value = relocateAddress(oc, nSections, sections, reloc->r_address); } IF_DEBUG(linker, debugBelch("relocateSection: value = %p\n", (void *)value)); -- 1.7.10.4