Example #1
0
void *dlopen(const char *pathname, int flags) {
    static void * (*real_dlopen)(const char *pathname, int flags) = NULL;
    const char *p;
    void *ret;

    /* If the value of file is 0, dlopen() shall provide a handle on a global symbol object. */
    if (pathname == NULL)
	return real_dlopen(pathname, flags);
    
    GET_PATH(dlopen);
    if (p) {
	ret = real_dlopen(p, flags);
	PUT_PATH(NULL);
    }
    return real_dlopen(pathname, flags);
}
Example #2
0
void *dlopen(const char *filename, int flag)
{
	char *msg = NULL;
	void *handle = NULL;
	print_stack();
	if (real_dlopen == NULL) {
		dlerror();
		real_dlopen = dlsym(RTLD_NEXT, "dlopen");
		if ((msg = dlerror()) != NULL) {
			fprintf(stderr, "dlsym failed: %s\n", msg);
			exit(1);
		}
		fprintf(stderr, "Real dlopen at addr %p\n", real_dlopen);
	}
	handle = real_dlopen(filename, flag);
	if (!handle) {
		return NULL;
	}
	ftdm_log(FTDM_LOG_NOTICE, "Loaded %s with handle %p\n", filename, handle);
	return handle;
}