aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xconfigure1
-rw-r--r--src/sysdeps/trydladdr.c33
2 files changed, 34 insertions, 0 deletions
diff --git a/configure b/configure
index caa7bbd..c063946 100755
--- a/configure
+++ b/configure
@@ -693,6 +693,7 @@ choose cl getauxval 'getauxval()'
choose cl kernprocpathname 'the KERN_PROC_PATHNAME sysctl'
choose cl _nsgetexecutablepath '_NSGetExecutablePath()'
choose cl getexecname 'getexecname()'
+choose cl dladdr 'dladdr()'
# Here are the evil irreducible run-time sysdeps.
choose clr devurandom '/dev/urandom'
diff --git a/src/sysdeps/trydladdr.c b/src/sysdeps/trydladdr.c
new file mode 100644
index 0000000..3240785
--- /dev/null
+++ b/src/sysdeps/trydladdr.c
@@ -0,0 +1,33 @@
+/* ISC license. */
+
+#undef _POSIX_C_SOURCE
+#undef _XOPEN_SOURCE
+
+#ifndef __EXTENSIONS__
+#define __EXTENSIONS__
+#endif
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+#ifndef _BSD_SOURCE
+#define _BSD_SOURCE
+#endif
+#ifndef _DEFAULT_SOURCE
+#define _DEFAULT_SOURCE
+#endif
+#ifndef _NETBSD_SOURCE
+#define _NETBSD_SOURCE
+#endif
+#ifndef _INCOMPLETE_XOPEN_C063
+#define _INCOMPLETE_XOPEN_C063
+#endif
+
+#include <dlfcn.h>
+
+int main (void)
+{
+ Dl_info info ;
+ if (!dladdr(&main, &info)) return 1 ;
+ if (!info.dli_fname) return 1 ;
+ return 0 ;
+}