From 9da4b6afffd849f85c4892a2016c899358db99af Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 16 Feb 2007 21:35:21 +0000 Subject: make sure static variables are re-initialized everytime --- test/dlopen/dlstatic.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 test/dlopen/dlstatic.c (limited to 'test/dlopen/dlstatic.c') diff --git a/test/dlopen/dlstatic.c b/test/dlopen/dlstatic.c new file mode 100644 index 000000000..57c8c5dd1 --- /dev/null +++ b/test/dlopen/dlstatic.c @@ -0,0 +1,43 @@ +#include +#include +#include +#include +#include + +#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; +} -- cgit v1.2.3