summaryrefslogtreecommitdiff
path: root/lang/ghc7/patches/patch-rts_StgCRun.c
blob: 1ed9b60767fc088cec09d3540619d6d23984820a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
$NetBSD: patch-rts_StgCRun.c,v 1.2 2015/02/05 00:59:10 pho Exp $

We have to make the visiblity of StgRun and StgReturn to "hidden" not
to trigger a bug in old binutils which results in:

   ld: rts/dist/build/RtsStartup.dyn_o: relocation R_X86_64_PC32
   against `StgRun' can not be used when making a shared object;
   recompile with -fPIC

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.

This has already been fixed in the upstream:
https://ghc.haskell.org/trac/ghc/ticket/7813

--- rts/StgCRun.c.orig	2013-01-27 13:21:52.000000000 +0000
+++ rts/StgCRun.c
@@ -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 %1, %%rsp\n\t"
         "movq %%rsp, %%rax\n\t"
@@ -280,6 +281,7 @@ StgRunIsImplementedInAssembler(void)
         "jmp *%%rax\n\t"
 
         ".globl " STG_RETURN "\n"
+        ".hidden " STG_RETURN "\n"
          STG_RETURN ":\n\t"
 
         "movq %%rbx, %%rax\n\t"   /* Return value in R1  */