#include <dlfcn.h> | |
#include <stdio.h> | |
int | |
main (void) | |
{ | |
void *h1 = dlopen ("$ORIGIN/testobj6.so", RTLD_GLOBAL|RTLD_LAZY); | |
if (h1 == NULL) | |
{ | |
puts ("cannot open testobj6"); | |
return 1; | |
} | |
void *h2 = dlopen ("$ORIGIN/testobj2.so", | |
RTLD_GLOBAL|RTLD_DEEPBIND|RTLD_LAZY); | |
if (h2 == NULL) | |
{ | |
puts ("cannot open testobj2"); | |
return 1; | |
} | |
dlclose (h1); | |
void (*f) (void) = dlsym (h2, "p"); | |
if (f == NULL) | |
{ | |
puts ("cannot find p"); | |
return 1; | |
} | |
f (); | |
dlclose (h2); | |
return 0; | |
} |