| #include <stdio.h> | |
| #include <dlfcn.h> | |
| int bar = -20; | |
| int | |
| main (void) | |
| { | |
| int ret = 0; | |
| void *handle; | |
| void (*fcn) (void); | |
| handle = dlopen("./tmpdir/libdl6b.so", RTLD_GLOBAL|RTLD_LAZY); | |
| if (!handle) | |
| { | |
| printf("dlopen ./tmpdir/libdl6b.so: %s\n", dlerror ()); | |
| return 1; | |
| } | |
| fcn = (void (*)(void)) dlsym(handle, "foo"); | |
| if (!fcn) | |
| { | |
| printf("dlsym foo: %s\n", dlerror ()); | |
| ret += 1; | |
| } | |
| else | |
| { | |
| (*fcn) (); | |
| } | |
| dlclose (handle); | |
| return ret; | |
| } |