use RTLD_LAZY instead of RTLD_NOW
authorSimon Marlow <marlowsd@gmail.com>
Thu, 24 Jul 2008 15:27:27 +0000 (15:27 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Thu, 24 Jul 2008 15:27:27 +0000 (15:27 +0000)
RTLD_NOW apparently causes some problems, according to previous
mailing-list discussion

 http://www.haskell.org/pipermail/cvs-ghc/2007-September/038570.html

rts/Linker.c

index 07d1a1a..7d9bc34 100644 (file)
@@ -1019,7 +1019,9 @@ addDLL( char *dll_name )
 
    initLinker();
 
-   hdl= dlopen(dll_name, RTLD_NOW | RTLD_GLOBAL);
+   // omitted: RTLD_NOW
+   // see http://www.haskell.org/pipermail/cvs-ghc/2007-September/038570.html
+   hdl= dlopen(dll_name, RTLD_LAZY | RTLD_GLOBAL);
 
    if (hdl == NULL) {
       /* dlopen failed; return a ptr to the error msg. */