summaryrefslogtreecommitdiff
path: root/libguile/dynl-dl.c
diff options
context:
space:
mode:
authorTim Pierce <twp@skepsis.com>1997-11-21 19:39:23 +0000
committerTim Pierce <twp@skepsis.com>1997-11-21 19:39:23 +0000
commit2a0d71767f66bb8dd41dd2f4cd4503858891868e (patch)
treeaa7e984116e7d3840acc20c871ed66899db66fa7 /libguile/dynl-dl.c
parente41530ba095f461acd05973a1d148e0cfc44e509 (diff)
downloadguile-2a0d71767f66bb8dd41dd2f4cd4503858891868e.tar.gz
Added support for leading dlsym underscore.
Diffstat (limited to 'libguile/dynl-dl.c')
-rw-r--r--libguile/dynl-dl.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/libguile/dynl-dl.c b/libguile/dynl-dl.c
index d8fb0c49d..2b619ca61 100644
--- a/libguile/dynl-dl.c
+++ b/libguile/dynl-dl.c
@@ -87,14 +87,24 @@ sysdep_dynl_func (symb, handle, subr)
{
void *fptr;
char *err;
+ char *usymb;
- fptr = dlsym (handle, symb);
+ usymb = (char *) malloc (strlen (symb) + 2);
+#ifdef DLSYM_ADDS_USCORE
+ strcpy (usymb, symb);
+#else
+ *usymb = '_';
+ strcpy (usymb + 1, symb);
+#endif
+
+ fptr = dlsym (handle, usymb);
err = (char *)dlerror ();
if (!fptr)
{
SCM_ALLOW_INTS;
scm_misc_error (subr, err? err : "symbol has NULL address", SCM_EOL);
}
+ free (usymb);
return fptr;
}