diff --git a/runtime.c b/runtime.c index 6a37f83f..d4316f00 100644 --- a/runtime.c +++ b/runtime.c @@ -5603,9 +5603,18 @@ void Cyc_import_shared_object(void *data, object cont, object filename, object e Cyc_check_str(data, entry_pt_fnc); handle = dlopen(string_str(filename), RTLD_LAZY); if (handle == NULL) { - Cyc_rt_raise2(data, "Unable to import library from", filename); + //make_string(s, dlerror()); + fprintf(stderr, "%s\n", dlerror()); + Cyc_rt_raise2(data, "Unable to import library", filename); } + dlerror(); /* Clear any existing error */ + entry_pt = (function_type) dlsym(handle, string_str(entry_pt_fnc)); + if (entry_pt == NULL) { + //make_string(s, dlerror()); + fprintf(stderr, "%s\n", dlerror()); + Cyc_rt_raise2(data, "Unable to load symbol", entry_pt_fnc); + } mclosure1(clo, entry_pt, cont); entry_pt(data, 0, &clo, &clo); } diff --git a/scheme/cyclone/libraries.sld b/scheme/cyclone/libraries.sld index 47f956b5..ea70b219 100644 --- a/scheme/cyclone/libraries.sld +++ b/scheme/cyclone/libraries.sld @@ -597,7 +597,7 @@ (c:dyn-load (lib:import->filename lib-name ".so") (string-append - " c_" (lib:name->string lib-name) "_entry_pt_first_lambda")))) + "c_" (lib:name->string lib-name) "_entry_pt_first_lambda")))) (define-c c:dyn-load "(void *data, int argc, closure _, object k, object fn, object entry_fnc)"