Index: /trunk/ccl/lisp-kernel/pmcl-kernel.c
===================================================================
--- /trunk/ccl/lisp-kernel/pmcl-kernel.c	(revision 4833)
+++ /trunk/ccl/lisp-kernel/pmcl-kernel.c	(revision 4834)
@@ -98,4 +98,5 @@
 #include <sys/resource.h>
 #include <dlfcn.h>
+#include <elf.h> 
 #endif
 
@@ -1743,5 +1744,5 @@
 xFindSymbol(void* handle, char *name)
 {
-#ifdef LINUX
+#if defined(LINUX) || defined(FREEBSD)
   return dlsym(handle, name);
 #endif
@@ -1769,3 +1770,25 @@
 }
 
-
+void *
+get_r_debug()
+{
+#if defined(LINUX) || defined(FREEBSD)
+#if WORD_SIZE == 64
+  extern Elf64_Dyn _DYNAMIC;
+  Elf64_Dyn *dp;
+#else
+  extern Elf32_Dyn _DYNAMIC;
+  Elf32_Dyn *dp;
+#endif
+  int tag;
+
+  for (dp = &_DYNAMIC; (tag = dp->d_tag) != 0; dp++) {
+    if (tag == DT_DEBUG) {
+      return (void *)(dp->d_un.d_ptr);
+    }
+  }
+#endif
+  return NULL;
+}
+
+
