-pg on your system implies static linking. dlopen() is not available in statically linked binaries on FreeBSD and many other systems.
Consider building your binary dynamic by making sure there is a dynamic version of libc with profiling support (something like /usr/lib/libc_p.so).
Otherwise, there seems to be no obvious way to do it.
Sergey Lyubka wrote:
Below is a little snipper that tries to dlopen(argv[1]). It works fine until it is compiled with profiling support, -pg flag.
Compiled with -pg, dlopen() reports "Service unavailable".
How to fix that ?
-sergey
#include <dlfcn.h> #include <stdlib.h> #include <stdio.h>
int main(int argc, char *argv[]) { void *handle, *sym;
if (argc > 1) { handle = dlopen(argv[1], RTLD_NOW); if (handle == NULL) { fprintf(stderr, "dlopen: %s\n", dlerror()); } else { fprintf(stderr, "handle: %p\n", handle); if (argc > 2) { sym = dlsym(handle, argv[2]); fprintf(stderr, "%s: %p\n", argv[2], sym); } } }
return (EXIT_SUCCESS); } _______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"
-- Lev Walkin [EMAIL PROTECTED]
_______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"