With this workaround we can no longer override those two symbols using
LD_PRELOAD, but I think there is no reason to do so anyway.
---- rts/StgCRun.c.orig 2012-03-21 03:41:49.000000000 +0000
+
+--- rts/StgCRun.c.orig 2013-01-27 13:21:52.000000000 +0000
+++ rts/StgCRun.c
-@@ -238,6 +238,7 @@ StgRunIsImplementedInAssembler(void)
+@@ -246,6 +246,7 @@ StgRunIsImplementedInAssembler(void)
* save callee-saves registers on behalf of the STG code.
*/
".globl " STG_RUN "\n"
+ ".hidden " STG_RUN "\n"
STG_RUN ":\n\t"
- "subq %0, %%rsp\n\t"
+ "subq %1, %%rsp\n\t"
"movq %%rsp, %%rax\n\t"
-@@ -259,6 +260,7 @@ StgRunIsImplementedInAssembler(void)
+@@ -280,6 +281,7 @@ StgRunIsImplementedInAssembler(void)
"jmp *%%rax\n\t"
".globl " STG_RETURN "\n"