From b4639cb249f2f904eb78271d0bdedbd90ceb7216 Mon Sep 17 00:00:00 2001 From: wolfgang Date: Mon, 27 Sep 2004 17:43:47 +0000 Subject: [PATCH] [project @ 2004-09-27 17:43:47 by wolfgang] Mac OS X: Fix an incorrect ASSERT Merge to STABLE --- ghc/rts/Linker.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ghc/rts/Linker.c b/ghc/rts/Linker.c index 891cf13..7924913 100644 --- a/ghc/rts/Linker.c +++ b/ghc/rts/Linker.c @@ -3492,7 +3492,7 @@ static int relocateSection( else if(reloc->r_type == PPC_RELOC_BR24) { word = *wordPtr; - word = (word & 0x03FFFFFC) | (word & 0x02000000) ? 0xFC000000 : 0; + word = (word & 0x03FFFFFC) | ((word & 0x02000000) ? 0xFC000000 : 0); } @@ -3518,7 +3518,9 @@ static int relocateSection( if(reloc->r_pcrel) { - ASSERT(word == 0); + // In the .o file, this should be a relative jump to NULL + // and we'll change it to a jump to a relative jump to the symbol + ASSERT(-word == reloc->r_address); word = symbolAddress; jumpIsland = makeJumpIsland(oc,reloc->r_symbolnum,word); word -= ((long)image) + sect->offset + reloc->r_address; -- 1.7.10.4