38 lines
1.9 KiB
Diff
38 lines
1.9 KiB
Diff
commit 104a66a461f4f89b8e5ad9c829923bb7ca8ceddb
|
|
Author: Sergei Trofimovich <slyfox@gentoo.org>
|
|
Date: Sat Aug 23 13:11:23 2014 +0300
|
|
|
|
rts/Linker.c: declare 'deRefStablePtr' as an exported 'rts' symbol
|
|
|
|
$ inplace/bin/ghc-stage2 -fforce-recomp -dcore-lint -dcmm-lint -dno-debug-output -no-user-package-db -rtsopts -optc-fno-builtin -fno-ghci-history \
|
|
testsuite/tests/ffi/should_run/T4038.hs --interactive -v0 -ignore-dot-ghci +RTS -I0.1 -RTS
|
|
|
|
*Main> main
|
|
<interactive>: /tmp/ghc16668_0/ghc16668_5.o: unknown symbol `deRefStablePtr'
|
|
|
|
The reference to 'deRefStablePtr' is generated by 'compiler/deSugar/DsForeign.lhs':
|
|
the_cfun
|
|
= case maybe_target of
|
|
Nothing -> text "(StgClosure*)deRefStablePtr(the_stableptr)"
|
|
Just hs_fn -> char '&' <> ppr hs_fn <> text "_closure"
|
|
|
|
Patch fixes all broken tests using 'import wrapper':
|
|
TEST="ffi013 ffi010 ffi011 ffi005 ffi020 ffi006 ffi019 fed001 T1679 T4038"
|
|
|
|
Tests manifested as broken only in DYNAMIC_GHC_PROGRAMS=NO builds,
|
|
where GHCi's custom linker is used instead of system's linker.
|
|
|
|
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
|
|
|
|
diff --git a/rts/Linker.c b/rts/Linker.c
|
|
index e97580d..b24be58 100644
|
|
--- a/rts/Linker.c
|
|
+++ b/rts/Linker.c
|
|
@@ -1092,6 +1092,7 @@ typedef struct _RtsSymbolVal {
|
|
SymI_HasProto(__word_encodeFloat) \
|
|
SymI_HasProto(stg_atomicallyzh) \
|
|
SymI_HasProto(barf) \
|
|
+ SymI_HasProto(deRefStablePtr) \
|
|
SymI_HasProto(debugBelch) \
|
|
SymI_HasProto(errorBelch) \
|
|
SymI_HasProto(sysErrorBelch) \
|