Pass RTLD_NOW, not RTLD_LAZY, to dlopen.
authorTaylor R Campbell <campbell@mumble.net>
Thu, 20 Jun 2013 15:18:19 +0000 (15:18 +0000)
committerTaylor R Campbell <campbell@mumble.net>
Thu, 20 Jun 2013 15:18:21 +0000 (15:18 +0000)
Let dlopen fail recoverably if there are missing symbols, rather than
aborting the hapless process when it tries to use them later.

src/microcode/pruxdld.c

index 11a9615e1cde78c44656c51c6b4ab3947d1e4a33..83d301770f4263e9c716290102f4965ec32d9a8c 100644 (file)
@@ -117,7 +117,7 @@ dld_load (const char * path)
       cleanup_registered_p = true;
     }
 
-  handle = (dlopen (path, (RTLD_LAZY | RTLD_GLOBAL)));
+  handle = (dlopen (path, (RTLD_NOW | RTLD_GLOBAL)));
   if (handle == 0)
     {
       SCHEME_OBJECT v = (allocate_marked_vector (TC_VECTOR, 3, 1));