
On Sun, 24 Sep 2006 20:20:55 +0300, Anatoly Zaretsky wrote:
#include
extern void __stginit_Socks(void);
static void __attribute__ ((constructor)) my_init(void) { int argc = 1; char *argv[] = {"Haskell shared object"}; char **argvp = argv; hs_init(&argc, &argvp); hs_add_root(__stginit_Socks); }
static void __attribute__ ((destructor)) my_fini(void) { hs_exit(); }
That solved it! If anyone wants to do the same: I put the code you gave above in hsinit.c, and compiled everything with: ghc -Wall -c -fffi testffi.hs gcc -g -Wall -I/usr/lib/ghc-6.4.2/include -c -o hsinit.o hsinit.c ghc -Wall -optl "-shared" -o libtestffi.so \ hsinit.o testffi.o testffi_stub.o Then, using LD_PRELOAD with the test program worked fine. Thanks a lot! -Stephan