12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- #include <fcntl.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <dlfcn.h>
- #include <stdint.h>
- #define LIBNAME "libstatic.so"
- int load_and_test(void)
- {
- void *handle;
- int (*mystatic)(void);
- handle = dlopen(LIBNAME, RTLD_LAZY);
- if (!handle) {
- fprintf(stderr, "Could not open ./%s: %s\n", LIBNAME, dlerror());
- return 1;
- }
- mystatic = dlsym(handle, "static_test");
- if (mystatic == NULL) {
- fprintf(stderr, "Could not locate symbol 'static_test': %s\n", dlerror());
- return 1;
- }
- if (!mystatic()) {
- fprintf(stderr, "mystatic() failed: static vars were not setup properly\n");
- return 1;
- }
- dlclose(handle);
- return 0;
- }
- int main(int argc, char **argv)
- {
- int count = 5;
- while (count-- > 0)
- if (load_and_test())
- return EXIT_FAILURE;
- return EXIT_SUCCESS;
- }
|