diff -urwpN ghc-6.4.1/ghc/rts/StgCRun.c ghc-6.4.1.patched/ghc/rts/StgCRun.c --- ghc-6.4.1/ghc/rts/StgCRun.c 2005-03-30 04:01:48.000000000 -0600 +++ ghc-6.4.1.patched/ghc/rts/StgCRun.c 2006-03-21 17:13:22.000000000 -0600 @@ -179,7 +179,7 @@ StgRun(StgFunPtr f, StgRegTable *basereg extern StgThreadReturnCode StgRun(StgFunPtr f, StgRegTable *basereg); -static void StgRunIsImplementedInAssembler(void) +static void GNUC3_ATTRIBUTE(used) StgRunIsImplementedInAssembler(void) { __asm__ volatile ( /* @@ -604,7 +604,7 @@ static void StgRunIsImplementedInAssembl // *) The Link Register is saved to a different offset in the caller's stack frame // (Linux: 4(r1), Darwin 8(r1)) -static void StgRunIsImplementedInAssembler(void) +static void GNUC3_ATTRIBUTE(used) StgRunIsImplementedInAssembler(void) { __asm__ volatile ( "\t.globl StgRun\n" @@ -683,7 +683,7 @@ static void StgRunIsImplementedInAssembl #ifdef linux_HOST_OS extern StgThreadReturnCode StgRun(StgFunPtr f, StgRegTable *basereg); -static void StgRunIsImplementedInAssembler(void) +static void GNUC3_ATTRIBUTE(used) StgRunIsImplementedInAssembler(void) { // r0 volatile // r1 stack pointer @@ -833,7 +833,7 @@ static void StgRunIsImplementedInAssembl #define LOCALS 31 #endif -static void StgRunIsImplementedInAssembler(void) +static void GNUC3_ATTRIBUTE(used) StgRunIsImplementedInAssembler(void) { __asm__ volatile( ".global StgRun\n"