123456789101112131415161718192021222324252627282930313233343536373839 |
- #include <stdlib.h>
- #include <dlfcn.h>
- #include <stdio.h>
- typedef void (*voidfn)(void);
- int failures = 0;
- void
- __vtv_verify_fail (void **data_set_ptr, const void *vtbl_pointer)
- {
- failures++;
- return;
- }
- int main()
- {
- char so_name[] = "so0.so";
- void * dlhandle = dlopen(so_name, RTLD_NOW);
- if (!dlhandle)
- {
- fprintf(stderr, "dlopen %s error: %s\n", so_name, dlerror());
- exit(1);
- }
- voidfn so_entry = (voidfn)dlsym(dlhandle, "so_entry_0");
- if (!so_entry)
- {
- fprintf(stderr, "dlopen %s dlsym error: %s\n", so_name, dlerror());
- exit(2);
- }
- so_entry();
- dlclose(dlhandle);
- }
|