From: gwright@antiope.com Date: Wed, 9 Feb 2011 22:24:23 +0000 (+0000) Subject: Fix #4867, ghci displays negative floats incorrectly X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=a914a2249f13e36695060084465e97c2174ab71d 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. --- 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));