| 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;}
 |