123456789101112131415161718192021222324252627282930313233 |
- #include <stdio.h>
- #include <dlfcn.h>
- int bar = -20;
- int
- main (void)
- {
- int ret = 0;
- void *handle;
- void (*fcn) (void);
- handle = dlopen("./tmpdir/libdl1.so", RTLD_GLOBAL|RTLD_LAZY);
- if (!handle)
- {
- printf("dlopen ./tmpdir/libdl1.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;
- }
|